के भीतर मार डाला गया है, तो मैं NSUserDefaults की तुलना में उपयोगकर्ता वरीयताओं को सहेजने का एक तेज़ तरीका ढूंढ रहा हूं। मैंने पाया है कि यदि ऐप को NSUserDefaults को लिखने के लगभग 10 सेकंड के भीतर मार दिया गया है, तो यह स्थायी रूप से सहेजा नहीं जाएगा। मैं कस्टम रिंग टोन, कस्टम छवियों के पथ, मानचित्र निर्देशांक, और मूल रूप से केवल उपयोगकर्ता परिभाषित वरीयताओं के पथ को सहेजने के लिए डिफ़ॉल्ट का उपयोग करता हूं। कोर डेटा का बेहतर विकल्प उपयोग कर रहा है? SQLite? सबसे तेज और सबसे हल्के वजन के रूप में क्या स्वीकार किया जाता है?NSUserDefaults नए सहेजे गए डेटा को खो देते हैं यदि ऐप 10 सेकेंड
उत्तर
आपको तुरंत डेटा को सहेजने के लिए सिंक्रनाइज़ करने के लिए कॉल करना सुनिश्चित करना होगा।
[[NSUserDefaults standardUserDefaults] synchronize];
एप्पल के class reference से:
क्योंकि इस विधि स्वचालित रूप से आवधिक अंतरालों पर उत्पन्न होता है, उपयोग इस विधि केवल यदि आप (उदाहरण के लिए स्वत: तुल्यकालन के लिए इंतजार नहीं कर सकता, आपके आवेदन के बारे में है अगर बाहर निकलने के लिए) या यदि आप डिस्क पर मौजूद उपयोगकर्ता को डिफ़ॉल्ट रूप से अद्यतन करना चाहते हैं, भले ही आपने कोई बदलाव नहीं किया है।
और अपने दूसरे प्रश्न का उत्तर देने के लिए, यह वास्तव में इस बात पर निर्भर करता है कि आप कितना डेटा स्टोर करना चाहते हैं। NSUserDefaults को टॉगल स्विच की स्थिति जैसे डेटा की बहुत छोटी मात्रा (वरीयताओं के लिए) स्टोर करने के लिए डिज़ाइन किया गया है। आप यहां छवियों और रिंग टोन के पथों को संग्रहीत करने से दूर हो सकते हैं लेकिन यह बिल्कुल सलाह नहीं दी जाती है। इसका मतलब है कि आप कर सकते हैं, लेकिन शायद नहीं करना चाहिए।
कोर डेटा एक बेहतर तरीका है यदि आप इन पथों में से कई को स्टोर करने की योजना बनाते हैं क्योंकि यह बहुत स्केलेबल है और बहुत अच्छा प्रदर्शन करता है। तो कुल मिलाकर, यदि आपको बहुत सारे डेटा स्टोर करने की आवश्यकता है, तो उपयोगकर्ता डेटा डेटा, या दस्तावेज़ विकल्प में एक प्लिस्ट में पथ के रूप में अन्य वैकल्पिक स्टोर के रूप में।
हाँ। आपके लिए +1, मुझे भी, मुझे उसी समय के लिए मेरे सीसीए 50 प्रतिनिधि मिल गए हैं। हालांकि, डुप्ली की खोज करने के लिए बहुत आलसी। –
@ 0x7fffffff circa (लगभग) 50 –
@ 0x7fffffff (इतना wannabe प्रोग्रामर और बहुत कम प्रयास ... :() –