#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
, иначе среда выполнения вызовет исключение.