Сопоставьте NSDictionary с объектами домена после десериализации JSON
В моем проекте я использую TouchJSON для десериализации строки JSON. В результате получается красивый NSDictionary. Я хотел бы получить данные в этом словаре в мои доменные объекты / объекты данных.
Есть ли хороший способ сделать это? Некоторые лучшие практики?
Возможно, лучше всего сохранить NSDictionary и пропустить доменные объекты?
2 ответа
Здесь есть два подхода. Либо добавить -initWithJSONString:
метод к вашим объектам данных и передать JSON непосредственно им для разбивки, или добавить -initWithAttributes:
метод, который берет словарь, который вы получаете при разборе JSON. Например:
- (id)initWithAttributes:(NSDictionary *)dict
{
// This is the complicated form, where you have your own designated
// initializer with a mandatory parameter, just to show the hardest problem.
// Our designated initializer in this example is "initWithIdentifier"
NSString *identifier = [dict objectForKey:MYIdentifierKey];
self = [self initWithIdentifier:identifier];
if (self != nil)
{
self.name = [dict objectForKey:MYNameKey];
self.title = [dict objectForKey:MYTitleKey];
}
return self;
}
Создание -initWithJSONString:
Метод будет очень похож.
Для этого нет встроенного механизма... и я создал небольшую утилиту, которая использует метафору KVC для отображения атрибутов словаря в объекте домена... утомительно и только на 1 уровне домена.
Я еще не пробовал, но Google Mantle выглядит так, как будто
Он отображает JSON в вашу модель домена.