NSCFArray 长度]:错误,数组正则表达式

Posted

技术标签:

【中文标题】NSCFArray 长度]:错误,数组正则表达式【英文标题】:NSCFArray length]: error, array regex 【发布时间】:2010-09-29 19:17:36 【问题描述】:
  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];

我只是不断收到这个错误?

        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: (

请帮助它让我发疯

【问题讨论】:

【参考方案1】:

NSLog 的第一个参数应该是格式字符串。你正在传递一个 NSArray。当函数试图将您的数组视为字符串时,您会收到该错误。请改用NSLog(@"%@", iTunesAristName);

【讨论】:

我正在看 Chuck atm 呵呵,无论如何我无法从数组中检索项目。 我在数组中一无所获,我 2000% 确定正则表达式是正确的 @user393273:由于您正在使应用程序崩溃,我想从数组中检索项目是不可能的。如果在应用正常运行时仍然无法检索项目,那就是另一个问题了。【参考方案2】:

Chuck 已经回答了您的问题,但我注意到其他问题。

NSArray 是一个数组,而不是字符串,所以[iTunesArtistName isEqual:@""] 永远不会返回true,因为它们是不同的类。即使iTunesArtistName 是一个字符串,也应该使用isEqualToString: 方法进行比较,而不是isEqual:

如果您只想提取艺术家的姓名,您可以这样做:

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

【讨论】:

【参考方案3】:

我看到您正在使用 RegexKitLite,请确保您导入 libicucore.dylib,在我导入该库之前,我遇到了同样的错误。

【讨论】:

以上是关于NSCFArray 长度]:错误,数组正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

JAVA正则表达式代码

在C#中怎么用正则表达式限制文本框内不能输入数字?

从 plist 读取而不是代码数组:[NSCFArray objectForKey:]: unrecognized selector

限制正则​​表达式中的字符长度

正则表达式

通过 db2-luw 上的 xmlquery 使用正则表达式执行更新语句时出现 SQL 错误