質問

  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、私はそのライブラリをインポートするまで、私は同じエラーを取得しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top