Come posso utilizzare Github Mantle per scegliere una classe di proprietà basata su un'altra proprietà nella stessa classe? (o nel caso peggiore un'altra parte dell'oggetto JSON).Classe di proprietà Mantle basata su un'altra proprietà?
Per esempio se ho un oggetto come questo:
{
"content": {"mention_text": "some text"},
"created_at": 1411750819000,
"id": 600,
"type": "mention"
}
Voglio fare un trasformatore come questo:
+(NSValueTransformer *)contentJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(NSDictionary* contentDict) {
return [MTLJSONAdapter modelOfClass:ETMentionActivityContent.class fromJSONDictionary:contentDict error:nil];
}];
}
Ma il dizionario passato al trasformatore include solo il 'contenuto' parte del JSON, quindi non ho accesso al campo 'tipo'. Esiste comunque l'accesso al resto dell'oggetto? O in qualche modo basare la classe del modello di 'contenuto' sul 'tipo'?
ho già stato costretto a fare le soluzioni di hack come questo:
+(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];
}
}];
}
È la soluzione perfetta! Grazie. Molti problemi hanno risolto. – CFIFok