2011-08-23 13 views
11

मुझे एक एनएससीएफ डिक्शनरी मिली है और मैं इसका उपयोग नहीं कर सकता हूं। मुझे पता है कि यह एनएससीएफ डिक्शनरी है क्योंकि मैंने कक्षा मुद्रित की है और यह __NCSFDictionary के रूप में बाहर आया है। मैं यह नहीं समझ सकता कि इसके साथ कुछ कैसे करना है।एनएससीएफ डिक्शनरी क्या है?

मैं अभी के लिए यह पर धारण करने के लिए कोशिश कर रहा हूँ लेकिन फिर भी नहीं है कि काम करने के लिए प्राप्त कर सकते हैं:

NSDictionary *dict = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials]; 
    for(NSURLProtectionSpace key in [dict keyEnumerator]) 
    { 
     NSCFDictionary *value = [dict objectForKey:key]; 
    } 

allCredentials के लिए वर्ग संदर्भ कहते हैं इसकी एक शब्दकोश जिनके मान भी शब्दकोशों हैं वापस जाने के लिए चाहिए। मेरा असाइनमेंट स्टेटमेंट हालांकि काम नहीं कर रहा है। क्या मुझे किसी तरह का कलाकार चाहिए?

उत्तर

26

NSDictionary और अन्य collection classes वास्तव में class clusters हैं: कई ठोस उपवर्गों कक्षाएं एकल वर्ग के इंटरफेस के तहत मुखौटा धारण कर लिया: वे सभी एक ही कार्यक्षमता प्रदान (क्योंकि वे एक ही वर्ग के उपवर्गों कर रहे हैं - NSDictionary के मामले में, इस शामिल तीन "आदिम विधियों"-count, -objectForKey:, और -keyEnumerator), लेकिन अलग-अलग परिस्थितियों में कुशल होने के लिए विभिन्न आंतरिक कार्यप्रणाली हैं, यह कैसे बनाया जाता है और वे किस प्रकार का डेटा संग्रहीत कर सकते हैं।

एनएससीएफ डिक्शनरी बस एनएस डिक्शनरी का एक ठोस उप-वर्ग है। यही है, आपके एनएसडीयूजी वास्तव में एनएससीएफबीई उदाहरण हो सकते हैं, लेकिन आपको उन्हें NSDictionary के उदाहरणों के रूप में देखना चाहिए, क्योंकि इससे आपको आवश्यक शब्दकोश-संग्रहण कार्यक्षमता प्रदान की जाएगी।

NSDictionary *value = [dict objectForKey:key];

अब, एक और कारण अपने कोड काम नहीं करता: NSURLProtectionSpace एक वर्ग है, तो आप एक सूचक के रूप में उपयोग करना चाहिए, इस तरह:

for (NSURLProtectionSpace *key ... 
+0

मैंने बस NSDictionary का उपयोग करने की कोशिश की लेकिन यह संकलित नहीं होगा। हो सकता है कि यह एक एक्सकोड मुद्दा – JPC

+0

संकलन करते समय आपको क्या त्रुटियां मिलती हैं? – jtbandes

+0

@ जेपीसी: मुझे एक और समस्या मिली, मेरा अद्यतन उत्तर देखें। – jtbandes

5

एनएससीएफ डिक्शनरी एनएस डिक्शनरी का निजी उप-वर्ग है जो वास्तविक कार्यक्षमता लागू करता है। यह सिर्फ एक NSDictionary है। आपके द्वारा उपयोग किए जाने वाले किसी भी NSDictionary के बारे में हुड के नीचे एक एनएससीएफ डिक्शनरी होगी। इससे आपको कोई फर्क नहीं पड़ता। आप चर को NSDictionary के रूप में टाइप कर सकते हैं और तदनुसार इसका उपयोग कर सकते हैं।

+0

हम्म तो यह कैसे काम नहीं करता है ... NSDictionary * value = [dict objectForKey: key]; – JPC

+0

@ जेपीसी: मान लीजिए कि 'dict'' ऑब्जेक्ट को पॉइंटर रखता है जो 'ऑब्जेक्ट फॉरकी: ', जैसे कि NSDictionary (या इसके किसी भी उप-वर्ग) का एक अन्य उदाहरण है, जो ठीक काम करता है। –

0

मैं एक NSCFDictionary है वास्तव में एक एनएसएमयूटेबल डिक्शनरी वस्तु है, मैं इससे वस्तुओं को हटा सकता हूं। मैं jtbandes के उत्तर को और स्पष्ट करने के लिए इसका जिक्र करता हूं: एनएससीएफ डिक्शनरी ऑब्जेक्ट एनएस डिक्शनरी से प्राप्त कोई भी वस्तु हो सकती है।

संबंधित मुद्दे