如何使用 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];
}
}];
}