2016-05-24 5 views
0

Я новичок в кодировании для iOS, пытаясь переработать некоторый код aJax, так что набор результатов массива JSON может быть правильно проанализирован приведенным ниже кодом.Cocoa iOS Parsing JSON Array

JSON Вернуться Строка

{ 
    "employees": [ 
     { 
      "firstName": "John", 
      "lastName": "Doe" 
     }, 
     { 
      "firstName": "Anna", 
      "lastName": "Smith" 
     }, 
     { 
      "firstName": "Peter", 
      "lastName": "Jones" 
     } 
    ] 
} 

Оригинал Учебник

https://spring.io/guides/gs/consuming-rest-ios/

IOS код

 if (data.length > 0 && connectionError == nil) 
    { 
     NSDictionary *greeting = [NSJSONSerialization  JSONObjectWithData:data 
                    options:0 
                    error:NULL]; 
     //self.greetingId.text = [[greeting objectForKey:@"id"] stringValue]; 
     //self.greetingContent.text = [greeting objectForKey:@"content"]; 

     self.greetingId.text = [[greeting objectForKey:@"employees"] stringValue]; 
     self.greetingContent.text = [greeting objectForKey:@"firstName"]; 
    } 
}]; 

Заранее спасибо!

+0

Хотя это не ясно из вопроса, что актуальной проблемой является, вот некоторые вопросы, пятнистый в этом фрагменте кода: 1) 'objectForKey: @«сотрудники»' возвращает 'NSArray', так что я думаю,' stringValue 'на самом деле не то, что вы ищете 2)' objectForKey: @ "firstName" из словаря приветствия (помните, что это ваш корневой объект) вернет 'nil'. Я надеюсь, что это имеет смысл и управляет вами в правильном направлении :) – Alladinian

ответ

0

Ваши «сотрудники» - это массив, в котором есть несколько первоисточников и фамилий словарей init, поэтому то, что вы пытаетесь сделать в своем коде, неверно.

Вам нужно создать массив из класса объектов employee. что даст вам несколько словарей, и для доступа к этим словарям вы можете использовать цикл for и назначить ключи для строк.

NSArray *employeesArray = [greeting objectForKey:@"employees"]; 

for (NSDictionray *dict in employeesArray) { 
    NSString *firstname = [[dict objectForKey:@"firstName"] stringValue]; 
    NSString *lastName = [[dict objectForKey:@"lastName"] stringValue]; 
    // do something with names 
} 
+0

Я добавил объяснение –

+0

, как и следующий pastebin, даже не уверенный, как что-то сделать с текстом ... хочу распечатать имена ... -> http : //pastebin.com/yv92v0RT – Dango

+0

да, но вы ничего не делаете с именами в этом коде, у вас более одного имени и фамилии в этом примере json, который вы отправили в своем вопросе, и ваш вопрос не является полным. что вы пытаетесь достичь, какие ошибки вы получаете и т. д. –