2012-07-28 97 views
0

我試圖解析一些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

回答

0

您的JSON解析是正確的。該錯誤被拋出,因爲在您的NSLog()語句中的語法錯誤的。

的NSLog()採用一個NSString作爲參數,但你正在試圖通過一個NSDictionary代替,這是造成錯誤(即你的NSArray的第一個元素)。

對此的解決方案是使用一個NSString格式字符串到NSDictionary的對象轉換爲字符串,像這樣:

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

謝謝,是啊,我就是這麼做的調試東西,在另一個代碼區發生這竟然是我的拉動代碼的時候各方能夠是無問題。 – 2012-07-28 17:25:24

相關問題