字符串数组JSON无法识别的选择错误

问题描述:

我试图解析一些JSON的NSArray的,但我发现了以下错误:字符串数组JSON无法识别的选择错误

[__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]; 

}

缔约方2被预先定义为:

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#背景的这样的机会是我失去了一个非常简单的事情。

谢谢:)

+0

它显然返回一个“的NSMutableDictionary *”在这种情况下,虽然我没有看到为什么。是否更新了“错误”?您可以尝试立即将数据(与“NSJSONSerialization”类也)进行再次写入看它是怎么解释的。为了理智检查结果,你可以使用'NSObject'方法,例如'if([jsonArray isKindOfClass:[NSArray class]])...'。 – 2012-07-28 06:19:34

+0

因此错误是零,如果我打印jsonArray的描述在调试(显然我不能NSLog的数组?),它说,看起来像一个阵列),它没有进入if语句,所以它看起来喜欢它的一个NSArray的。 它仍然给我[_NSCFDictionart长]:unrecongnized选择发送到实例 – 2012-07-28 15:39:59

您的JSON解析是正确的。该错误被抛出,因为在您的NSLog()语句中的语法错误的。

的NSLog()采用一个NSString作为参数,但你正在试图通过一个NSDictionary代替,这是造成错误(即你的NSArray的第一个元素)。

对此的解决方案是使用一个NSString格式字符串到NSDictionary的对象转换为字符串,像这样:

NSLog(@"%@",[parties2 objectAtIndex:0]); 
+0

谢谢,是啊,我就是这么做的调试东西,在另一个代码区发生这竟然是我的拉动代码的时候各方能够是无问题。 – 2012-07-28 17:25:24