2013-07-29 4 views
0

Я пытаюсь разобрать этот JSON:синтаксического анализа результатов JSON с помощью NSJSONSerialization

{ 
    "myData": [ 
     { 
      "date": "2013-07-29", 
      "preferredMeetingLocation": "home", 
      "isbn": null, 
      "category": "Clothing", 
      "price": "5", 
      "title": "clothingstuff", 
      "description": "Desc" 
     }, 
     { 
      "date": "2013-07-29", 
      "preferredMeetingLocation": "home2", 
      "isbn": null, 
      "category": "Clothing", 
      "price": "2", 
      "title": "other", 
      "description": "Desc2" 
     } 
    ] 
} 

До сих пор у меня есть:

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil]; 
    NSDictionary *results = [json objectForKey:@"myData"]; 
for (NSDictionary *item in results) { 
    NSLog(@"results::%@", [results objectForKey:@"title"]); 
} 

, но я получаю Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x8877e40'

Основная цель состоит в том, чтобы быть в состоянии для анализа данных, полученных, и затем отображения каждого набора информации в ячейке.

Что я делаю неправильно?

+0

Вы выполняете именно то, что сообщение говорит, что вы делаете: пытаетесь выполнить «objectForKey» в NSArray. –

ответ

2

Линия

NSLog(@"results::%@", [results objectForKey:@"title"]); 
//      ^---- Wrong variable used here! 

должно быть

NSLog(@"results::%@", [item objectForKey:@"title"]); 
+0

ах стрелять спасибо, также если я хочу получить счет за то, сколько предметов вернулись, в этом случае 2, как мне это получить? Я думаю, что это что-то вроде '[[results allKeys] count];' но это также сбой – BluGeni

+1

@BluGeni: Обратите внимание, что 'результаты' должны быть * массивом *:' NSArray * results = ... 'как @rmaddy правильно сказано в его ответе. И тогда '[results count]' должен работать. –

1

results должен быть массивом. И вы регистрируете неправильный объект.

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil]; 
NSArray *results = [json objectForKey:@"myData"]; 
for (NSDictionary *item in results) { 
    NSLog(@"title::%@", [item objectForKey:@"title"]); 
} 
Смежные вопросы