Сопоставьте NSDictionary с объектами домена после десериализации JSON - PullRequest
2 голосов
/ 27 января 2010

В моем проекте я использую TouchJSON для десериализации строки JSON. В результате получается красивый NSDictionary. Я хотел бы получить данные из этого словаря в мои доменные объекты / объекты данных.

Есть ли хороший способ сделать это? Некоторые лучшие практики?

Возможно, лучше всего сохранить NSDictionary и пропустить доменные объекты?

Ответы [ 2 ]

1 голос
/ 27 января 2010

Здесь есть два подхода. Либо добавьте метод -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: было бы очень похоже.

0 голосов
/ 23 мая 2013

Нет встроенного механизма для этого ... и я создал небольшую утилиту, которая использует метафору KVC для сопоставления атрибутов словаря с объектом домена ... утомительно и только на 1 уровне домена.

Я еще не пробовал это, но Google Mantle выглядит так, как будто может сработать:

Google Mantle

Он отображает JSON в модель вашего домена.

...