Jak mogę użyć Github Mantle, aby wybrać klasę właściwości na podstawie innej właściwości w tej samej klasie? (lub w gorszym przypadku inna część obiektu JSON).Klasa właściwości płaszcza na podstawie innej właściwości?
Na przykład jeśli mam obiektu takiego:
{
"content": {"mention_text": "some text"},
"created_at": 1411750819000,
"id": 600,
"type": "mention"
}
Chcę zrobić transformator tak:
+(NSValueTransformer *)contentJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(NSDictionary* contentDict) {
return [MTLJSONAdapter modelOfClass:ETMentionActivityContent.class fromJSONDictionary:contentDict error:nil];
}];
}
ale słownika przekazywane do transformatora obejmuje jedynie „content” część JSON, więc nie mam dostępu do pola "typ". Czy mimo to masz dostęp do reszty obiektu? Lub w jakiś sposób oprzeć modelową klasę "treści" na "typie"?
już wcześniej został zmuszony do rozwiązania hackerskich zrobić tak:
+(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];
}
}];
}
To idealne rozwiązanie! Dzięki. Wiele problemów zostało rozwiązanych. – CFIFok