मैं जेएसओएन जानकारी को विभिन्न वस्तुओं में गतिशील रूप से मैप करने की कोशिश कर रहा हूं। लेकिन मैं समझ नहीं पा रहा हूं कि पूरी सूचक स्थिति को नियंत्रण में कैसे प्राप्त किया जाए, जैसा कि मैं उम्मीद कर रहा था कि काम नहीं करेगा।उद्देश्य-सी DRY JSON मैपिंग और ऑब्जेक्ट क्रिएशन
अब तक मेरी कार्यप्रणाली प्रत्येक वस्तु के लिए एक शब्दकोश बनाने के लिए, बराबर JSON चाबियाँ करने के लिए चर संकेत दिए गए मानचित्रण किया गया है। मेरे JSON मैपर में, मेरे पास एक विधि है, parseJSONFromDictionary:withObject
जिसे SBJSON के JSONValue द्वारा वापस किए गए शब्दकोश पर फिर से शुरू किया जाना चाहिए और दिए गए ऑब्जेक्ट में उचित चर के लिए उपयुक्त मान असाइन करें।
-(NSObject *)parseJSONFromDictionary:(NSDictionary *)dict withObject:(NSObject *)start{
for (NSString *key in dict) {
if ([[self.mappings objectForKey:key] isMemberOfClass:[NSString class]]) {
start.[self.mappings objectForKey:key] = [[dict valueForKey:key] stringValue];
}
}
return start;
}
mappings
शब्दकोश चर और json कुंजी है कि है, और dict
क्या JSON पार्सर से लौटे हो जाता है।
बड़ी समस्या यह है कि मैं start.[self.mappings objectForKey:key]
नहीं कर सकते। मुझे सी के बारे में बहुत कुछ पता नहीं है, और स्पष्ट रूप से मुझे पॉइंटर्स के बारे में पर्याप्त जानकारी नहीं है, तो मैं इस तरह की प्रणाली बनाने के बारे में कैसे जाऊं? मुझे पता है कि ऐसा करने का सही तरीका नहीं है, लेकिन सही तरीका क्या है? मुझे पता है कि यह किया जा सकता है, क्योंकि RestKit ऐसा करता है, लेकिन वे ओएथ का समर्थन नहीं करते हैं इसलिए मैं दुख की बात अपने सुंदर ढांचे का उपयोग नहीं कर सकता।
कारण मैं इस मार्ग जा रहा हूँ क्योंकि एपीआई के साथ मैं काम कर रहा हूँ अपने अल्फा चरण में है है। मैं कोड की कई पंक्तियों को फिर से लिखने के बिना किसी भी भावी बदलावों को आसानी से अनुकूलित करने में सक्षम होना चाहता हूं। मैं भी DRY-ly प्रोग्रामिंग शुरू करना चाहता हूं। मुझे पता है कि जेएसओएन पार्सिंग बहुत दोहराया गया है, और मैं ओवरहेड की मात्रा को कम करने का एक तरीका ढूंढना चाहता हूं।
किसी भी और सभी मदद के लिए धन्यवाद!
संपादित करें: ऐसा लगता है कि मैं क्या पूछ रहा हूँ के रूप में कुछ भ्रम की स्थिति नहीं है। I JSON को पार्स करने में सहायता चाहिए। मैं पहले से ही SBJSON का उपयोग कर रहा हूं। I को अनुरोध करने में सहायता की आवश्यकता नहीं है, मैं पहले से ही JDG's OAuthConsumer framework का उपयोग कर रहा हूं। I केवल OAuth 2.0 का समर्थन करने वाले ढांचे का उपयोग कर सकते हैं।
मैं पता लगाना कैसे इसे रोकने मदद की जरूरत है:
-(Class1 *)parseJsonForClass1:(NSString *)inputString {
NSDictionary *outputDict = [inputString JSONValue];
Class1 *instance1 = [self mapObjectsForClass1From:outputDict];
return instance1;
}
-(Class2 *)parseJsonForClass2:(NSString *)inputString {
NSDictionary *outputDict = [inputString JSONValue];
Class2 *instance2 = [self mapObjectsForClass2From:outputDict];
return instance2;
}
-(Class3 *)parseJsonForClass3:(NSString *)inputString {
NSDictionary *outputDict = [inputString JSONValue];
Class2 *instance3 = [self mapObjectsForClass3From:outputDict];
return instance3;
}
-(Class1 *)mapObjectsForClass1From:(NSDictionary *)dict {
Class1 *object1 = [[Class1 alloc] init];
object1.name = [[dict valueForKey:@"name"] stringValue];
object1.date = [[dict valueForKey:@"date"] stringValue];
object1.objId = [[dict valueForKey:@"id"] intValue];
return object1;
}
-(Class2 *)mapObjectsForClass2From:(NSDictionary *)dict {
Class2 *object2 = [[Class2 alloc] init];
object2.something = [[dict valueForKey:@"something"] stringValue];
object2.title = [[dict valueForKey:@"title"] stringValue];
object2.imageUrl = [[dict valueForKey:@"image_url"] stringValue];
return object2;
}
-(Class3 *)mapObjectsForClass3From:(NSDictionary *)dict {
Class3 *object3 = [[Class3 alloc] init];
object3.foo = [[dict valueForKey:@"bar"] stringValue];
object3.flag = [[dict valueForKey:@"is_member"] boolValue];
object3.obj1 = [[Class1 alloc] init];
object3.obj1 = [self mapOjectsForClass1From:[dict objectForKey:@"name1"]];
return object3;
}
तो मुझे बताएं कि आप कैसे 1 विधि में तरीकों में से इन प्रकार के गठबंधन करने के लिए पर कोई सुझाव हैं तो कृपया ...
क्या आपने https://github.com/RestKit/RestKit पर देखा है? – Brenden
मैंने रेस्टकिट को देखा था। मुझे यह पसंद नहीं आया कि उसने क्या किया, और मैं अभी भी नहीं करता। मेरे जीवन में कभी भी एक लूप में ऑब्जेक्ट्स को बढ़ाने के लिए मैंने एक और अधिक सही स्मृति आवंटन वक्र देखा है। – MishieMoo