Как сопоставить объекты JSON с классами Objective C?

Я сопоставляю данные в формате JSON с веб-сервера с классами Objective C (NSManagedObjects, смоделированные в Xcode, обрабатываемые Core Data). Для каждого атрибута класса Objective C мне нужно:

  1. Определить, существует ли ключ атрибута в объекте JSON,
  2. Определить, не является ли значение для этого ключа нулевым, и
  3. Передать значение в смоделированный экземпляр класса, если выполняются условия 1 и 2

Прямо сейчас я жестко кодирую эту последовательность для каждого из атрибутов, поэтому для каждого атрибута нужен следующий код:

// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class

if ([dictObject objectForKey:@"nameFirst"] &&
    [dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
    person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}

Помимо требования лота кода для обработки различных классов, это кажется неуклюжим и хрупким: любое изменение имени (или языковой локализации) приведет к сбою сопоставления.

Должен быть лучший способ ... что мне не хватает?

6
задан Dan 22 April 2011 в 16:12
поделиться