2013-07-14 10 views
6

Mam usługę sieci Web, która zwraca JSON obiektu, a wewnątrz tego obiektu znajduje się lista innych obiektów. Jak mogę przekonać Mantle do stworzenia obiektu dla każdego z tych zagnieżdżonych obiektów, zamiast dostarczania mi słownika dla każdego z nich?MTLModels w ramach MTLModels?

+1

możliwy duplikat [Jak określić typ obiektów podrzędnych w NSArray z Mantle] (http://stackoverflow.com/questions/13883693/how-to-specify-child-objects-type-in-an-nsarray- z płaszczem) –

Odpowiedz

12

Można to zrobić za pomocą mtl_JSONDictionaryTransformerWithModelClass: tranformera wprowadzonego przez Mantle jakiś czas temu. wygląd

Miejmy na przykład wzięty z samego Mantle project readme:

@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 

Zakładając GHUser jest podklasą MTLModel zgodne z protokołem MTLJSONSerializing, wszystko powinno działać idealnie.

AKTUALIZACJA: Powyższe rozwiązanie jest już przestarzałe. Prawidłową metodą użycia jest teraz metoda wewnątrz metody "assigneeJSONTransformer".

+1

Nie powiedzie się, jeśli pole cesjonariusza jest puste/zerowe. Jak mogę to sprawdzić i pominąć transformację w tym przypadku? –