Github Mantle を使用して、同じクラスの別のプロパティに基づいてプロパティ クラスを選択するにはどうすればよいですか? (または最悪の場合、JSON オブジェクトの別の部分)。
たとえば、次のようなオブジェクトがある場合:
{
"content": {"mention_text": "some text"},
"created_at": 1411750819000,
"id": 600,
"type": "mention"
}
私はこのようなトランスフォーマーを作りたいです:
+(NSValueTransformer *)contentJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(NSDictionary* contentDict) {
return [MTLJSONAdapter modelOfClass:ETMentionActivityContent.class fromJSONDictionary:contentDict error:nil];
}];
}
しかし、トランスフォーマーに渡される辞書には JSON の「コンテンツ」部分しか含まれていないため、「タイプ」フィールドにはアクセスできません。オブジェクトの残りの部分にアクセスする方法はありますか? または、何らかの方法で「コンテンツ」のモデル クラスを「タイプ」に基づいていますか?
私は以前、次のようなハック ソリューションを行うことを余儀なくされました。
+(NSValueTransformer *)contentJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(NSDictionary* contentDict) {
if (contentDict[@"mention_text"]) {
return [MTLJSONAdapter modelOfClass:ETMentionActivityContent.class fromJSONDictionary:contentDict error:nil];
} else {
return [MTLJSONAdapter modelOfClass:ETActivityContent.class fromJSONDictionary:contentDict error:nil];
}
}];
}