2013-02-25 49 views
6

के बारे में समस्याएं/प्रश्न ठीक है, मै मैक-विशिष्ट चीज़ होने के नाते NSUserDefaults स्वीकार करता हूं (और मैं पिछले कुछ वर्षों से मैक प्रोग्रामर हूं), उन चीज़ों में से एक है जिन्हें मैंने बहुत कुछ नहीं निकाला है .. इसलिए यहां कुछ मुद्दे/प्रश्न हैं जो मैंने पार किए हैं:NSUserDefaults

मुझे लगता है कि NSUserDefaults मूल रूप से NSMutableDictionary.plist के रूप में लिखा गया है।

मेरे सवालों का:

  1. यह देखते हुए कि मैं चल रहा हूँ OS X 10.7 (शेर) और सक्षम होने सैंडबॉक्स, जहां मेरे ऐप की .plist फ़ाइल है? (मैं दोनों ~/Library/Preferences/com.example.myapp.plist और ~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist खोज है, लेकिन इनमें से कोई भी वैध लगता है

  2. मैं समझता हूँ कि इस .plist फ़ाइल पहली बार एप्लिकेशन लॉन्च होने, सही बनाई गई है?

  3. registerDefaults: आवेदन पर इस्तेमाल किया जा रहा है लांच (awakeFromNib में जैसे) और जब हम एक विशेष कुंजी स्थापित कर रहे हैं एक शब्दकोश मूलभूत मूल्यों कि तुरंत .plist फ़ाइल में जमा हो जाती है, और केवल बदल भिन्न मान कुछ बिंदु पर सेट है, तो सही की

  4. प्रदान करते हैं? -वैल्यू जोड़ी, वह जोड़ी स्वचालित रूप से और मैं है .plist फ़ाइल में तुरंत सहेजा गया? और यदि हां, तो हमें synchronize का उपयोग क्यों करना चाहिए? (यह हर बार कुछ मूल्य एक overkill सेट किया गया है का उपयोग कर रहा है, या यह विशेष मामलों के लिए आरक्षित किया जाना चाहिए?)


Sidenote: मुझे आशा है कि कोई भी नहीं osx टैग के अपने उपयोग के बारे में शिकायत । हालांकि, मैं अपने (ज्यादातर) ओएसएक्स से संबंधित प्रश्नों को कोको टच/आईओएस से संबंधित उत्तरों को देखने में बहुत थक गया हूं। तो, यहाँ आप कर रहे हैं ... :-)


संपादित करें: इस विषय पर कुछ वास्तव में उपयोगी जानकारी के लिए, कृपया स्वीकार किए जाते हैं जवाब पर एक नज़र के साथ ही यह नीचे टिप्पणी की है।

+1

+1 का उपयोग करना हमेशा बेहतर होता है। –

+1

कोई भी [टैग: ओएसएक्स] टैग के बारे में शिकायत क्यों करेगा? इसका इस्तेमाल किया जाना है। – Caleb

+0

@ कैलेब मैं एसओ से काफी परिचित हूं और अंतहीन पुन: संपादन को रोकने की कोशिश कर रहा हूं। मेरे साथ सहन करो! lol :-) –

उत्तर

3

उत्तर 1. घर निर्देशिका शेर में छिपी हुई है, इसलिए आप पथ में प्रवेश करने में सक्षम नहीं हैं (फ़ोल्डर को ढूंढने के बिना आप फ़ाइंडर से फ़ोल्डर में प्रवेश नहीं कर सकते)। आप अपनी छिपी हुई निर्देशिकाओं के चारों ओर स्थानांतरित करने के लिए Path Finder का उपयोग कर सकते हैं।

उत्तर 2. हमेशा नहीं। एक ही आवेदन में कई plists हो सकता है। कुछ लॉन्च पर कुछ ही बनते हैं, कुछ विशिष्ट कार्यवाही पर कुछ। दरअसल यह निर्भर करता है कि जब प्लास्ट फ़ाइल बनाई जाती है और इसका उपयोग कैसे किया जाता है।

उत्तर 3.registerDefaults: रजिस्ट्रार डिफ़ॉल्ट मान तब होते हैं जब उपयोगकर्ता ने उस संपत्ति पर अन्य मान निर्धारित नहीं किए हैं। ऐप खोले जाने पर उपयोगकर्ता द्वारा संग्रहीत किए गए किसी भी चीज़ को ओवरराइड नहीं किया जाएगा। आप इसे कहीं भी इस्तेमाल कर सकते हैं, लेकिन जैसा कि कहा गया है कि इसका उपयोग एक बार किया जाएगा।

उत्तर 4। मैक ओएसएक्स एप्लिकेशन के लिए कोई प्रदर्शन और ओवरकिल समस्या नहीं है, हालांकि आईओएस के लिए यह है। अच्छे प्रश्न के लिए [[NSUserDefaults standardUserDefaults] synchronize];

+0

"पथ में प्रवेश करने में सक्षम नहीं" से आपका क्या मतलब है? –

+0

फ़ोल्डर को देखे बिना आप खोजक –

+0

से फ़ोल्डर के अंदर प्रवेश नहीं कर सकते हैं आपके उत्तर के लिए धन्यवाद! :-) ** एक और प्रश्न/स्पष्टीकरण: ** मैं निश्चित रूप से * छुपा फाइलें देख सकता हूं और कहीं भी कहीं भी नेविगेट कर सकता हूं। हालांकि, उपरोक्त स्थान में 'my-app-name.plist' फ़ाइल (' ~/लाइब्रेरी/कंटेनर/com.example.myapp/डेटा/लाइब्रेरी/प्राथमिकताएं/com.example.myapp.plist') में * केवल * मूल्य जो मैंने 'setObject: forKey:' का उपयोग करके सेट किया है और 'रजिस्टर डिफ़ॉल्ट के माध्यम से नहीं:'। मुझे पूरा यकीन है कि मूल्य * सेट हैं * (मैंने उनका परीक्षण किया है - पंजीकरण के बाद और वे वहां हैं), हालांकि वे '.plist' में * नहीं * हैं। सो कैसे? –