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

それが私を夢中にさせるのを手伝ってください

4

3 に答える 3

0

チャックはあなたの質問に答えました、しかし私は問題がある何か他のものに気づきました。

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);
}
于 2010-09-30T01:57:01.120 に答える
0

NSLogの最初の引数は、フォーマット文字列であると想定されています。NSArrayを渡します。関数が配列を文字列として処理しようとすると、そのエラーが発生します。代わりに、を使用してNSLog(@"%@", iTunesAristName);ください。

于 2010-09-29T19:24:57.360 に答える
0

RegexKitLiteを使用しているようです。必ず、libicucore.dylibをインポートしてください。そのライブラリをインポートするまで、同じエラーが発生していました。

于 2012-11-12T05:16:24.873 に答える