2013-02-01 22 views
5

मैं उद्देश्य-सी (एक बेवकूफ खेत पुस्तक) पर पढ़ रहा हूं, और मैं इस प्रश्न के बारे में सोचने में मदद नहीं कर सकता: मैं कैसे तय करूं कि संग्रह संग्रह, एनएसएआरएआरई या एनएस डिक्शनरी (दोनों उनके उत्परिवर्तनीय उप-वर्गों के साथ) , यूआरएल से सामग्री पढ़ने के दौरान उपयोग करने के लिए?NSDictionary बनाम। NSArray

मान लें कि एक PHP स्क्रिप्ट (जो परिदृश्य से निपट रहा है) से JSON डेटा पढ़ रहा है, जिसका उपयोग करना है? मुझे पता है कि यह कई संदर्भों में कहा गया है कि यह डेटा की संरचना (यानी JSON) पर निर्भर करता है, लेकिन क्या दो संरचनाओं की स्पष्ट रूपरेखा को रेखांकित किया जा सकता है?

आप सभी की मदद करने के लिए धन्यवाद :)

उत्तर

2

आप NSArray उपयोग करने के लिए जब आप वस्तुओं के एक ही प्रकार के एक संग्रह है कभी चाहते हैं, और NSDictionary आप एक वस्तु पर गुण जब।

यदि आप हैं, मान लीजिए कि एक name, एक phone number और एक email युक्त एक person वस्तु आप एक शब्दकोश में रख जाएगा।

ऐसा करने से मूल्यों के क्रम को यादृच्छिक होने की अनुमति मिलती है, और आपको अधिक विश्वसनीय कोड मिल जाता है।

यदि आप एक और व्यक्ति चाहते हैं तो आप व्यक्ति को ऑब्जेक्ट में सरणी डाल सकते हैं।

ऐसा करने से आप उपयोगकर्ता ऑब्जेक्ट को पुन: सक्रिय कर सकते हैं।

+0

असहमत - यदि आप 'ग्राहक' ऑब्जेक्ट्स को अपने टेलीफोन नंबर से देखना चाहते हैं तो क्या होगा? समरूप वस्तुओं को रखने वाले शब्दकोशों के लिए बहुत सारे वैध कारण हैं। –

+0

मैं आपको अपने उत्तर –

+0

@CarlVeazey के बारे में स्पष्ट होने के लिए छद्म या नमूना कोड के साथ अपने बिंदु को हाइलाइट करने का अनुरोध करता हूं, निश्चित रूप से ऐसे मामले हैं जहां आपकी विशिष्ट आवश्यकताएं हैं। सरणी का उपयोग करके आप एक अधिक सामान्य बैकएंड बना सकते हैं, जो डेटाबेस से डेटा निकाल सकता है और आपके लिए JSON बना सकता है। – EsbenB

10

NSArray मूल रूप से ऑब्जेक्ट्स का ऑर्डर किया गया संग्रह है, जिसे इंडेक्स द्वारा एक्सेस किया जा सकता है।
NSDictionary कुंजी द्वारा अपनी ऑब्जेक्ट तक पहुंच प्रदान करता है (आमतौर पर एनएसएसट्रिंग्स, लेकिन हैश टेबल की तरह कोई ऑब्जेक्ट प्रकार हो सकता है)।

किसी URL के माध्यम से लोड किए गए JSON स्ट्रिंग से ऑब्जेक्ट ग्राफ़ उत्पन्न करने के लिए, आप NSJSONSerialization का उपयोग करते हैं, जो ऑब्जेक्टिव-सी ऑब्जेक्ट स्ट्रक्चर उत्पन्न करता है। परिणामी वस्तु JSON स्ट्रिंग पर निर्भर करती है। यदि आपके JSON में शीर्ष-स्तरीय तत्व एक सरणी है ("[" से शुरू होता है), तो आपको एक एनएसएआरएआरई मिल जाएगी। यदि शीर्ष-स्तरीय तत्व एक JSON ऑब्जेक्ट है ("{" से शुरू होता है), तो आपको एक NSDictionary मिल जाएगा।

0

"withContentOfURL" या "withContentOfFile" के लिए यूआरएल या फ़ाइल में डेटा को एक विशिष्ट प्रारूप में होना आवश्यक है क्योंकि यह कोको द्वारा आवश्यक है। JSON प्रारूप है। यदि आप फ़ाइल या डेटा को डेटा को पहले स्थान पर उसी डेटा के साथ लिखते हैं, तो आप केवल इन तरीकों का उपयोग कर सकते हैं। यदि आप एनएसएआरएआरई लिखते हैं, तो आप एनएसएआरएआरई पढ़ सकते हैं। यदि आप एक NSDictionary लिखते हैं, तो आप एक NSDictionary पढ़ सकते हैं। बाकी सब कुछ असफल हो जाएगा।