NSCF配列の長さ]:エラー、配列正規表現
-
26-09-2019 - |
質問
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: (
私を狂わせるのを助けてください
解決
はのNSLogへの最初の引数は、フォーマット文字列であると考えられます。あなたはNSArrayのを渡しています。関数は文字列として、あなたの配列を処理するためにしようとするときは、そのエラーが発生します。代わりに、使用しNSLog(@"%@", iTunesAristName);
ます。
他のヒント
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);
}
私はあなたがRegexKitLiteを使用している参照して、確認してくださいインポートlibicucore.dylib、私はそのライブラリをインポートするまで、私は同じエラーを取得しました。
所属していません StackOverflow