Frage

  StringReply = [[NSString alloc] initWithData:dataReply encoding:NSUTF8StringEncoding];

         //Regex Out Artist Name
         //NSString *regEx = ; 
         NSArray *iTunesAristName = [stringReply componentsMatchedByRegex: @"(?<=artistname\":\")([^<]+)(?=\")"]; 

         if ([iTunesAristName isEqual:@""]) { 
           NSLog(@"Something has messed up");
           //Regex Out Song Name
          }else{
           NSLog(iTunesAristName);
          }

         NSLog(iTunesAristName);
         [stringReply release];

Ich halte gerade diesen Fehler?

        2010-09-29 21:15:16.406 [2073:207] *** -[NSCFArray length]: unrecognized selector sent to instance 0x4b0b800
        2010-09-29 21:15:16.406 [2073:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray length]: unrecognized selector sent to instance 0x4b0b800'
        2010-09-29 21:15:16.407 [2073:207] Stack: (

Bitte helfen, seine mich verrückt

War es hilfreich?

Lösung

Das erste Argument für NSLog sollte ein Format-String sein. Sie vorbei ein NSArray. Wenn die Funktion versucht, das Array als String zu behandeln, erhalten Sie diesen Fehler. Verwenden Sie stattdessen NSLog(@"%@", iTunesAristName);.

Andere Tipps

Chuck hat Ihre Frage beantwortet, aber ich habe festgestellt, etwas anderes, das problematisch ist.

NSArray ist ein Array, kein String, so [iTunesArtistName isEqual:@""] nie true zurück, weil sie unterschiedliche Klassen sind. Selbst wenn iTunesArtistName eine Zeichenfolge ist, soll es die isEqualToString: Verfahren verglichen wird mit, nicht isEqual:.

Wenn Sie nur den Namen des Künstlers extrahieren möchten, können Sie in der Lage sein, dies zu tun:

NSArray *matches = [stringReply componentsMatchedByRegex: @"(?<=artistname\":\")([^<]+)(?=\")"]; 

if ([matches count] == 0)
{
    NSLog(@"Could not extract the artist name");
}
else
{
    NSString *iTunesArtistName = [matches objectAtIndex:0];

    NSLog(@"Artist name: %@", iTunesArtistName);
}

Ich sehe, Sie verwenden RegexKitLite, stellen Sie sicher, dass Sie importieren libicucore.dylib, ich war die gleichen Fehler, bis ich die Bibliothek importiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top