2011-04-10 7 views
6

से डेटा लोड नहीं करता है मुझे यकीन नहीं है कि मेरी समस्या वास्तव में क्या है क्योंकि मैं थोड़ी देर के लिए इस विधि का उपयोग कर रहा हूं और कभी भी यह समस्या नहीं थी।ऐरे प्लिस्ट

मूल रूप से, जैसा कि शीर्षक कहता है। यह कोड "संसाधन" समूह

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"]; 
myArray = [[NSArray alloc]initWithContentsOfFile:myFile]; 
NSLog(@"%@", myArray); 

में स्थित एक प्लेस्ट से डेटा लोड करता है यह प्रदर्शित करता है (शून्य)। किसी को पता है क्यों?

मेरे पास एक ही व्यू कंट्रोलर में एक और सेटअप है और ठीक काम करता है। हालांकि यह विशेष प्लिस्ट लोड नहीं होता है। और मैंने प्लिस्ट को भी हटा दिया है और यह सुनिश्चित करने के लिए कि एक संरचना समस्या नहीं है, सिर्फ एक से डुप्लिकेट बनाया है।

मैं यह गलत तरीका कर रहा हूं? क्या मुझे FileManager का उपयोग करना चाहिए?

अद्यतन --------------------------------------------- ----------------------------

ठीक है, तो मैं विश्वास नहीं कर सकता कि मैं क्या कहने वाला हूं। lol

मैं एक्सकोड 4 का उपयोग कर रहा हूं, जिस तरह से आप एक्सकोड में प्लेलिस्ट संपादित करते हैं, वह एक्सकोड 3.x से अलग है। जैसा कि पिछले संस्करणों में आप plists की जड़ चुनने के लिए w/e चाहते हैं, आप उन्हें चाहते हैं (ऐरे, डिक्शनरी, आदि) मेरी समस्या यह थी कि मैं जिस एनएसएआरएआरई में लोड करने की कोशिश कर रहा था, वह वास्तव में एक रूप में संरचित था शब्दकोश। हालांकि मैंने इसे एक्सकोड में कभी नहीं देखा, और मुझे नहीं पता कि TextEdit या किसी अन्य टेक्स्ट एडिटर का उपयोग करके सामग्री ब्राउज़ करने से मुझे यह कैसे देखना है।

सुंदर मूर्खतापूर्ण मुझे कहना चाहिए। क्या किसी को पता है कि XCode 4 XCode 3.x के तरीके के रूप में प्लिस्ट की जड़ क्यों नहीं दिखाएगा?

XCode 3.x:

XCode 4: http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png

उत्तर

3

इसके बजाय एक शब्दकोश का उपयोग करें। मैंने एनएसएआरआरए और संपत्ति सूचियों के साथ अपरिभाषित व्यवहार किया है। जैसे

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"]; 
NSMutableDictionary* myDict = [[NSMutableDictionary alloc]initWithContentsOfFile:myFile]; 
NSLog(@"%@", myDict); 
+0

यह काम करता है ... हालांकि मुझे समझ में नहीं आता क्यों।प्लिस्ट की संरचना बिल्कुल वही है जो मैं अपनी बाकी फ़ाइलों के लिए उपयोग कर रहा हूं। :( – MrShoot

+1

यदि आप प्लिस्ट में शीर्ष-स्तरीय ऑब्जेक्ट एक सरणी है, और इसके विपरीत, आप एक 'NSDictionary' या 'NSMutableDictionary' का उपयोग नहीं कर सकते हैं, तो यह * उपयोगकर्ता वरीयता का मामला नहीं है। जाहिर है , ओपी समस्या यह थी कि अंतर्निहित प्लिस्ट में शीर्ष-स्तरीय ऑब्जेक्ट एक सरणी के बजाय एक शब्दकोश था। यदि ऐसा है, तो @ManuelDiaz ने गलत उदाहरण प्लिस्ट फ़ाइल पोस्ट की है। – jlehr

+0

स्पष्टीकरण के लिए धन्यवाद। मुझे यह अपरिभाषित व्यवहार था एक्सकोड 4 के साथ-साथ। @Manuel Diaz के अपडेट तक ध्यान नहीं दिया गया कि एक्सकोड 4 प्लिस्ट रूट को छुपाता है। – David

0

आप क्या सही लग रहा है। जांचें कि फ़ाइल सही निर्देशिका में है, और इसमें सामग्री है। जब आप इसमें हों तो NSFog MyFile को चाहें।

+0

हाँ फ़ाइल सही निर्देशिका में है। यहां मेरा लॉग http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png और सामग्री http://dl.dropbox.com/u है /919254/Screen%20shot%202011-04-10%20at%202.33.37%20AM.png – MrShoot

+0

ठीक है, बस पोस्ट की गई प्लिस्ट फ़ाइल की जड़ की जांच करें एक शब्दकोश है (एक ऐरे की तरह दिखता है)। और आप अपने कार्यक्रम में सही नाम का उपयोग कर रहे हैं। – Jordan

+0

यह बहुत अजीब है, किसी भी तरह जब मैं एक शब्दकोश में प्लेस्ट लोड करता हूं तो यह मानों को कोई समस्या नहीं मिलती है। हालांकि संरचना मेरे बाकी plists के समान सटीक है और वे NSArrays के रूप में लोड! – MrShoot

1

मेरे पास एक समान स्थिति थी। हल:

  1. चयन * पेड़ में .plist
  2. कॉल संदर्भ मेनू
  3. चयन
  4. जड़ दिखाई जाएगी "बाहरी संपादक के साथ खोलें" - परिवर्तन "क्लास" को "सरणी"
  5. बचाने