开发者

NSCFArray length]: error, array regex

开发者 https://www.devze.com 2023-01-17 22:58 出处:网络
StringReply = [[NSString alloc] initWithData:dataReply encoding:NSUTF8StringEncoding]; //Regex Out Artist Name
  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];

I just keep getting this error ?

        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 a开发者_运维问答pp due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray length]: unrecognized selector sent to instance 0x4b0b800'
        2010-09-29 21:15:16.407 [2073:207] Stack: (

please help its driving me crazy


The first argument to NSLog is supposed to be a format string. You're passing an NSArray. When the function tries to treat your array as a string, you get that error. Instead, use NSLog(@"%@", iTunesAristName);.


Chuck has answered your question, but I've noticed something else that is problematic.

NSArray is an array, not a string, so [iTunesArtistName isEqual:@""] will never return true, because they are different classes. Even if iTunesArtistName was a string, it should be compared using the isEqualToString: method, not isEqual:.

If you want to extract only the artist's name, you might be able to do this:

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);
}


I see you're using RegexKitLite, make sure you import libicucore.dylib, i was getting the same error until i imported that library.

0

精彩评论

暂无评论...
验证码 换一张
取 消