загружать данные из JSON в объект программно?

#iphone #objective-c #ios #ipad

#iPhone #objective-c #iOS #iPad

Вопрос:

У меня есть данные из ответа JSON, которые я переношу в массив, как показано ниже

             originalPerson.firstname  = [memberData valueForKey:@"firstname"];
            originalPerson.lastname   = [memberData valueForKey:@"lastname"];                              
            originalPerson.address1   = [memberData valueForKey:@"address1"];
  

Есть ли способ справиться с этим в цикле, а не вводить каждую строку? TIA

Ответ №1:

Если класс экземпляра originalPerson соответствует кодированию ключ-значение (KVC), вы могли бы использовать что-то вроде

 for (NSString* key in [NSArray arrayWithObjects:@"firstname", @"lastname", @"address1", nil]) {
    [originalPerson setValue:[memberData valueForKey:key] forKey:key];
}
  

или даже

 for (NSString* key in [memberData allKeys]) {
    [originalPerson setValue:[memberData valueForKey:key] forKey:key];
}
  

если данные участника являются словарем, и вы уверены (или проверяете это), что у originalPerson есть соответствующие свойства. Я не знаю, как вы анализируете свой JSON, но я рекомендую SBJSON для objective C.

Комментарии:

1. Спасибо. Это именно то, что я искал. OBj-C — это здорово!! Я использую SBJson, но только что обнаружил, что он больше не поддерживается. Так что в какой-то момент я, вероятно, переключусь.

Ответ №2:

Вы также можете сделать

 [originalPerson setValuesForKeysWithDictionary:memberData]
  

будьте осторожны, чтобы memberData не содержать какой-либо ключ, который не соответствует атрибуту originalPerson , иначе среда выполнения вызовет исключение.