0

JSON を NSArray に解析しようとしていますが、次のエラーが発生します。

[__NSCFDictionary length]: unrecognized selector sent to instance 0x6d7a160

このエラーをスローしているコードの領域は次のとおりです。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {


NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSError* error;
NSLog(responseString);
NSArray *jsonArray = [NSJSONSerialization 
          JSONObjectWithData:responseData
          options:NSJSONReadingMutableContainers
          error:&error];
parties2=jsonArray;
NSLog([parties2 objectAtIndex:0]); //Exception thrown

[tableView reloadData];

}

party2 は、以前は次のように定義されていました。

parties2=[NSArray arrayWithObjects:nil];

私の ResponseString は次のようになります

[{"Name":"party 1.1","GreekName":"FoA 1","GreekID":325,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":1000,"price":15.0},{"Name":"party 1.2","GreekName":"FoA 1","GreekID":325,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":300,"price":20.0},{"Name":"party 1.3","GreekName":"FoA 1","GreekID":325,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":5000,"price":25.0},{"Name":"party 2.1","GreekName":"FoA 2","GreekID":326,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":500,"price":25.0},{"Name":"party 2.2","GreekName":"FoA 2","GreekID":326,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":300,"price":30.0},{"Name":"party 3.1","GreekName":"FoA 3","GreekID":327,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":0,"price":50.0},{"Name":"party 5.1","GreekName":"FoA 5 ","GreekID":329,"schoolName":"FoA University","schoolID":10,"numberAttending":0,"maxNumberAttending":300,"price":15.75}]

これは ObjC を使用した最初のベンチャーです。私は .Net C# のバックグラウンドを持っているため、非常に単純なことを見逃している可能性があります。

ありがとう :)

4

1 に答える 1

0

JSON 解析は正しいです。NSLog()ステートメント の構文が正しくないため、エラーがスローされています。

NSLog() は引数として NSString を取りますが、代わりに NSDictionary (つまり、NSArray の最初の要素) を渡そうとしているため、エラーが発生しています。

これに対する解決策は、次のように NSString フォーマット文字列を使用して NSDictionary オブジェクトを文字列に変換することです。

NSLog(@"%@",[parties2 objectAtIndex:0]);
于 2012-07-28T17:10:34.900 に答える