2013-07-14 13 views
6

私はオブジェクトのJSONを返すWebサービスを持っており、そのオブジェクト内には他のオブジェクトのリストがあります。どのようにして、これらの入れ子にされたオブジェクトのそれぞれに対して、それぞれの辞書を私に与えるのではなく、Mantleにオブジェクトを作成させることができますか?MTLモデル内のMTLモデル

+1

[Mantleを使用してNSArrayで子オブジェクトタイプを指定する方法]の複製可能性(http://stackoverflow.com/questions/13883693/how-to-specify-child-objects-type-in​​-an-nsarray- –

答えて

12

これはしばらく前にMantleによって導入されたmtl_JSONDictionaryTransformerWithModelClass:トランスフォーマーを使用して行うことができます。

はのはMantle project readme自体から取った例を見てみましょう:GHUserを想定し

@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 

MTLJSONSerializingプロトコルに準拠MTLModelのサブクラスであり、すべてが完璧に動作するはずです。

更新:上記の解決策は廃止されました。正しい方法は、 'assigneeJSONTransformer'メソッド内で

return [MTLJSONAdapter dictionaryTransformerWithModelClass:GHUser.class]; 

のようになります。

+1

割り当て先フィールドが空/ NULLの場合は失敗します。この場合、変換をスキップするにはどうしたらよいでしょうか? –

関連する問題