Làm cách nào để sử dụng Github Mantle để chọn một lớp thuộc tính dựa trên một thuộc tính khác trong cùng một lớp? (hoặc trong trường hợp xấu hơn một phần khác của đối tượng JSON).Lớp thuộc tính Mantle dựa trên tài sản khác?
Ví dụ nếu tôi có một đối tượng như thế này:
{
"content": {"mention_text": "some text"},
"created_at": 1411750819000,
"id": 600,
"type": "mention"
}
Tôi muốn làm một máy biến áp như thế này:
+(NSValueTransformer *)contentJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(NSDictionary* contentDict) {
return [MTLJSONAdapter modelOfClass:ETMentionActivityContent.class fromJSONDictionary:contentDict error:nil];
}];
}
Nhưng điển truyền cho biến chỉ bao gồm các 'nội dung' một phần của JSON, vì vậy tôi không có quyền truy cập vào trường 'loại'. Có cách nào để truy cập phần còn lại của đối tượng không? Hoặc bằng cách nào đó cơ sở lớp mô hình của 'nội dung' trên 'loại'?
Tôi đã từng bị buộc phải làm giải pháp Hack như thế này:
+(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];
}
}];
}
Đó là giải pháp hoàn hảo! Cảm ơn. Nhiều vấn đề đã được giải quyết. – CFIFok