2009-05-26 14 views
6

मेरे पास एक आईफोन एप्लिकेशन है जिसमें उपयोगकर्ता द्वारा दर्ज डेटा के साथ कई डोमेन ऑब्जेक्ट्स आबादी में आते हैं। बाधित होने के बाद राज्य को पुनर्स्थापित करने के लिए, ये ऑब्जेक्ट्स एनएससीओडिंग प्रोटोकॉल को लागू करते हैं और एप्लिकेशन WillTerminate संदेश में डिस्क (दस्तावेज़ निर्देशिका) पर लिखे जाते हैं। फिर, जब एप्लिकेशन दोबारा लॉन्च किया जाता है, तो डेटा के बाइट लोड हो जाते हैं और डोमेन ऑब्जेक्ट्स को दोहराया जाता है। दस्तावेजों निर्देशिका पाने के लिए कोड इस प्रकार है:मैं कोको त्रुटि 513 कैसे ठीक करूं?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

इस सिम्युलेटर में महान काम किया, लेकिन एक बार मैं iPhone करने के लिए एप्लिकेशन तैनात यह काम करना बंद कर। आईफोन त्रुटि कोड 513 का कारण क्यों है - जिसका स्पष्ट अर्थ है "अनुमति अस्वीकार कर दी गई।" /var/मोबाइल/आवेदन/30B51836-: - वहाँ iPhone देव डॉक्स कि थोड़ा और अधिक की व्याख्या में एक नोट है

डिवाइस पर, लौटे पथ (documentsDirectory) निम्नलिखित के समान है

/खंड/सामग्री/उपयोगकर्ताओं/johndoe/Library/Application समर्थन/iPhone के: D2DD-43AA-BCB4-9D4DADFED6A2/दस्तावेज़

हालांकि, सिम्युलेटर पर, लौटे मार्ग का अनुसरण रूप ले लेता हैसिम्युलेटर/प्रयोक्ता/अनुप्रयोग/118086A0-FAAF-4CD4-9A0F-CD5E8D287270/दस्तावेज़

यह सही व्यवहार है कि मैं दिखाई दे रही है है। मुझे सच में यकीन नहीं है कि यह अनुमति प्राप्त करने से संबंधित कैसे त्रुटि से इनकार करता है और इसे ठीक करने के लिए मैं क्या कर सकता हूं। यह कहना है नीचे -

पढ़ सकते हैं और उपयोगकर्ता वरीयताओं लिखने के लिए, NSUserDefaults वर्ग या CFPreferences एपीआई का उपयोग करें। इन इंटरफेस लाइब्रेरी/प्राथमिकता/निर्देशिका और के लिए पथ बनाने के लिए को सीधे लिखने और लिखने की आवश्यकता को समाप्त करने की आवश्यकता को समाप्त करें। इन इंटरफेस का उपयोग कर के बारे में अधिक जानकारी के लिए, आपके आवेदन आवेदन बंडल में ध्वनि, छवि, या अन्य संसाधनों हैं, तो " जोड़ना सेटिंग्स बंडल।"

देखते हैं, आप NSBundle वर्ग या CFBundle अपारदर्शी का उपयोग करना चाहिए उन संसाधनों को लोड करने के लिए टाइप करें। बंडलों में संसाधनों के निहित ज्ञान के निहित ज्ञान है। इसके अतिरिक्त, बंडल उपयोगकर्ता की भाषा वरीयताओं से अवगत हैं और स्थानीय संसाधनों को स्वचालित रूप से डिफ़ॉल्ट संसाधनों पर चुनने में सक्षम हैं। बंडलों के बारे में अधिक जानकारी के लिए, "आवेदन बंडल।" देख

मैं नहीं दिख रहा है कि कैसे मैं हालांकि डेटा के बाइट्स लोड करने के लिए आवेदन बंडल का उपयोग कर सकते हैं। कोई मदद या उदाहरण?

NSString *path = [[NSBundle mainBundle] pathForResource:@"somefile" ofType:@"png"]; 

यह और अन्य NSBundle से तरीकों आप वास्तव में जहां आवेदन बंडल स्थित है जानने के बिना आवेदन बंडल के अंदर से संसाधनों का उल्लेख करने की अनुमति:

उत्तर

13

यह सुनिश्चित नहीं है कि यह कैसे काम करता है, लेकिन स्पष्ट रूप से stringByAppendingPathComponent का उपयोग करके स्ट्रिंग के लिए स्ट्रिंगबैपेंडिंगस्ट्रिंग समस्या को हल करता है।

+1

मुझे लगता है कि अंतर "दस्तावेज़" के अंत में स्लैश है। –

1

आवेदन बंडल से संबंधित अनुच्छेद को दर्शाता है।

अस्वीकरण: मैंने आईफोन के साथ काम नहीं किया है।

दिमाग में अस्वीकरण के साथ, सादे ओएस एक्स में इसे एप्लिकेशन बंडल के अंदर सामान लिखने के लिए खराब रूप माना जाता है। आप उपयोगकर्ता के एप्लिकेशन समर्थन निर्देशिका के अंतर्गत सामान को सहेजते हैं -> NSApplicationSupportDirectory देखें।

0

मुझे यह त्रुटि मिली (513) क्योंकि पथ गलत था। मेरे पथ को दोबारा जांचने से समस्या ठीक हुई :)

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