MTLModels внутри MTLModels?

У меня есть веб-сервис, который возвращает JSON объекта, и в этом объекте есть список других объектов. Как я могу заставить Mantle создать объект для каждого из этих вложенных объектов, а не давать мне словарь для каждого из них?

1 ответ

Решение

Это можно сделать с помощью mtl_JSONDictionaryTransformerWithModelClass: Транформер, представленный Mantle некоторое время назад.

Давайте посмотрим на пример, взятый из самого readme проекта Mantle:

@interface GHIssue : MTLModel <MTLJSONSerializing>

@property (nonatomic, strong, readonly) GHUser *assignee;

@end
@implementation GHIssue

+ (NSDictionary *)JSONKeyPathsByPropertyKey {
    return @{
        @"assignee": @"assignee",
    };
}

+ (NSValueTransformer *)assigneeJSONTransformer {
    return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[GHUser class]];
}

@end

Если предположить, GHUser это подкласс MTLModel в соответствии с MTLJSONSerializing протокол, все должно работать отлично.

ОБНОВЛЕНИЕ: вышеупомянутое решение устарело. Правильный метод для использования сейчас будет

return [MTLJSONAdapter dictionaryTransformerWithModelClass:GHUser.class];

внутри метода assigneeJSONTransformer.

Другие вопросы по тегам