मैं एक ही कक्षा में किसी अन्य संपत्ति के आधार पर संपत्ति वर्ग चुनने के लिए गिथब मैटल का उपयोग कैसे कर सकता हूं? (या बदतर मामले में JSON ऑब्जेक्ट का एक और हिस्सा)।मैटल संपत्ति वर्ग किसी अन्य संपत्ति पर आधारित है?
उदाहरण के लिए अगर मैं इस तरह एक वस्तु है:
+(NSValueTransformer *)contentJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(NSDictionary* contentDict) {
return [MTLJSONAdapter modelOfClass:ETMentionActivityContent.class fromJSONDictionary:contentDict error:nil];
}];
}
लेकिन शब्दकोश ट्रांसफार्मर केवल 'सामग्री' शामिल करने के लिए पारित कर दिया:
{
"content": {"mention_text": "some text"},
"created_at": 1411750819000,
"id": 600,
"type": "mention"
}
मैं इस तरह एक ट्रांसफॉर्मर बनाना चाहते 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];
}
}];
}
यह एकदम सही समाधान है! धन्यवाद। कई समस्याएं हल हो गई हैं। – CFIFok