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 长度]:错误,数组正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
从 plist 读取而不是代码数组:[NSCFArray objectForKey:]: unrecognized selector