के एनएस डिक्शनरी को रिकर्सिव रूप से पार करता है क्या किसी ने अज्ञात संरचना के एनएस डिक्शनरी के रिकर्सिव ऑर्डर ट्रैवर्सल किया है? मैं किसी भी NSDictionary लेना चाहता हूं और प्रत्येक स्तर को पदानुक्रमित क्रम में संसाधित करना चाहता हूं।अज्ञात संरचना
1) यह डेटा मान्य JSON से आ रहा है। क्या यह कहना सुरक्षित है कि एसबीजेसन (जेएसओएन फ्रेमवर्क) जैसे ढांचे से निर्मित एनएस डिक्शनरी न केवल घोंसला वाले शब्दकोश, सरणी और मनमाने ढंग से पत्ते का संयोजन होगा?
2) तेजी से गणना का उपयोग करके एक सामान्य ट्रैवर्सल कैसे किया जा सकता है जो दोनों सरणी और शब्दकोश दोनों के लिए काम करता है? नीचे दिए गए कोड के साथ, एक बार जब मैं किसी सरणी के भीतर एक शब्दकोश में जाता हूं, तो यह ट्रैवर्सिंग बंद कर देता है। हालांकि, अगर मैं सरणी स्थिति (सरणी के भीतर शब्दकोशों की जांच करने के लिए) में रिकर्सन जारी रखता हूं, तो यह id value = [dict valueForKey:key];
के अगले पुनरावृत्ति पर -[__NSCFDictionary length]: unrecognized selector sent to instance
SIGABRT के साथ पुनरावृत्ति जारी रखता है। मुझे नहीं पता कि यह एक समस्या क्यों होगी, क्योंकि मैं पहले से ही उस स्तर को एक शीर्ष-स्तरीय शब्दकोश (जहां उप-स्तरीय शब्दकोशों की सरणी मिली थी) के साथ पिछली बार मिल गई थी।
-(void)processParsedObject:(id)dict counter:(int)i parent:(NSString *)parent
{
for (id key in dict) {
id value = [dict valueForKey:key];
NSLog(@"%i : %@ : %@ -> %@", i, [value class], parent, key);
if ([value isKindOfClass:[NSDictionary class]])
{
i++;
NSDictionary* newDict = (NSDictionary*)value;
[self processParsedObject:newDict counter:i parent:(NSString*)key];
i--;
}
else if ([value isKindOfClass:[NSArray class]])
{
for (id obj in value) {
NSLog(@"Obj Type: %@", [obj class]);
}
}
}
}
बहुत धन्यवाद
आप एनएसएलओजी एनएसएलओजी हर बार ऐसा करते हैं। –
सही, लेकिन सामान्य रूप से बिंदु प्रक्रिया में नेस्टेड ऑब्जेक्ट्स को कैप्चर और संसाधित करना है, न कि उन्हें लॉग इन करें। –
आपको केवल 'isKindOfClass' का उपयोग करने के तरीके सीखने की आवश्यकता है। –