2011-10-07 9 views
29

__NSArrayI और __NSArrayM क्या है?__NSArrayI और __NSArrayM क्या है? NSArray में कैसे परिवर्तित करें?

__NSArrayI (या एम) "अपरिचित चयनकर्ता" त्रुटि का कारण बनता है।

एनएसएआरएआरए में कैसे परिवर्तित करें?


मैंने जेसन, ट्विटर एपीआई पार्स करने के लिए परीक्षण किया था।

http://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=twitterapi

==> ठीक काम करता है। पार्स ऑब्जेक्ट एनएससीएफ डिक्शनरी कक्षा है।

http://api.twitter.com/1/statuses/user_timeline.json?&screen_name=twitterapi

==> त्रुटि (इस शब्दकोश __NSArrayM वर्ग शामिल हैं)। पार्स ऑब्जेक्ट __NSArrayM कक्षा है।

+2

पोस्ट कोड है कि आप एक त्रुटि देता है:

यहाँ आप दोनों की एक छोटी देखने देख सकते हैं। – Vladimir

+2

__NSArrayI => अपरिवर्तनीय एनएसएआरएआर __NSArrayM => परिवर्तनीय एनएसएआरएआर –

+1

भी अपरिचित चयनकर्ता संदेश पोस्ट करें। – JeremyP

उत्तर

70

__NSArrayI - जो है, एक "नियमित" NSArray जो आप बदल नहीं सकते

__NSArrayM एक परिवर्तनीय सरणी के लिए कोड-शब्द है - यानी NSMutableArrayNSMutableArray में, आप आइटम जोड़ और निकाल सकते हैं।

+7

नाइस - आपको यह ज्ञान कहां मिल रहा है? रनटाइम के स्रोत को सीधे पढ़कर? या कहीं कहीं कुछ प्रकार के दस्तावेज़ हैं। – sean

+2

नाम एक अच्छा सुराग हैं ("एम" और "मैं" सरणी के संदर्भ में बहुत अधिक नहीं हो सकता है लेकिन उत्परिवर्तनीय और अपरिवर्तनीय), लेकिन ऑब्जेक्ट_getClass() का उपयोग करके उन वस्तुओं का निरीक्षण करना सबसे अच्छा तरीका है जिन्हें आप एनएसएआरआरएएस के रूप में जानते हैं। –

+0

@Catfish_Man छः –

1

यह निजी कक्षाएं हैं। आपको उन्हें एक्सेस नहीं करना चाहिए या उन्हें परिवर्तित करना नहीं चाहिए।

यदि मुझे गलती नहीं है NSArray_NSArray का उप-वर्ग है।

आप जोड़ रहे हैं/कुछ वस्तुओं अपने सरणी की जांच से/को हटाने है कि यह अस्थायी प्रकार का है: अपरिवर्तनीय सरणी के लिए है एक कोड-वर्ड NSMutableArray

4

ये निजी एपीआई के वर्ग हैं। वहां is a project जहां आप निजी एपीआई के सभी वर्ग देख सकते हैं। आपको app store के लिए उन्हें ऐप के अंदर उपयोग करने की अनुमति नहीं है, लेकिन कभी-कभी यह भी उपयोगी होता है कि ऑब्जेक्ट्स को कैसे एक्सेस किया जाए और यह किस प्रकार की ऑब्जेक्ट है। वे परिवर्तित नहीं किया जा सकता है। मुझे लगता है कि, डीबगर के अंदर इन तरह की वस्तुओं को प्राप्त करना सिर्फ आपके प्रोजेक्ट के अंदर उपयोग की जाने वाली कक्षाओं के लिए आंतरिक कक्षाओं का प्रतिनिधित्व है। यह जानकर कि यह किस प्रकार की कक्षा है, आपको यह भी समझने देता है कि आपके कोड के अंदर समस्या को कहां देखना है।

__NSArrayI

enter image description here

__NSArrayM

enter image description here

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