2009-10-28 7 views
89

क्या यह मामला है? जब आप ऐप स्टोर पर किसी ऐप को अपडेट सबमिट करते हैं, या फिर रीसेट हो जाते हैं तो NSUserDefaults रीसेट हो जाते हैं?क्या NSUserDefaults Appstore में किसी ऐप के अपडेट के माध्यम से जारी रहता है?

मेरा ऐप जब अद्यतन क्रैश हो रहा है, लेकिन जब पूरी तरह से डाउनलोड किया दुर्घटनाग्रस्त नहीं - तो मैं निर्धारित करने के लिए क्या संभवतः हाल में डाउनलोड किया सत्र के लिए अद्यतन सत्र में अलग हो सकता है कोशिश कर रहा हूँ।

चीयर्स, निक।

+0

** दस्तावेज़ **, और ** लाइब्रेरी ** में दस्तावेज़ ** ** संरक्षित ** दस्तावेज दावों के रूप में ** संरक्षित होंगे: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/ संकल्पनात्मक/आईफोनओएसप्रोग्रामिंगगाइड/रनटाइम पर्यावरण/रनटाइम पर्यावरण @ # // apple_ref/डॉक्टर/यूआईडी/टीपी 40007072-सीएच 2-एसड 7 – Geri

उत्तर

101

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

+5

क्या ऐप्पल दस्तावेज में कहीं भी इसका उल्लेख है? –

+1

क्षमा करें - मैं आपके त्वरित उत्तर के लिए धन्यवाद देना भूल गया! - अगर कोई भी ऐप्पल दस्तावेज के किसी भी रूप में एक लिंक ढूंढ सकता है जो यह कहता है, तो यह बहुत अच्छा होगा .... NSUserDefaults के लिए प्रलेखन में यह इसके बारे में कुछ भी नहीं कहता है, इसलिए मुझे लगता है कि मैंने (गलत तरीके से) डिफ़ॉल्ट रूप से मिटा दिया था। ऐप्पल निश्चित रूप से ऐप अपडेट करने के लिए यह सबसे सुरक्षित तरीका प्रतीत होता है! –

+0

यह सबसे सुरक्षित तरीका हो सकता है, लेकिन उपयोगकर्ताओं के लिए यह अविश्वसनीय रूप से परेशान होगा अगर उन्हें किसी भी ऐप को अपडेट होने पर अपनी सभी प्राथमिकताओं को दोबारा सेट करना पड़ा। मेरे पास आमतौर पर प्रति दिन तीन या चार ऐप अपडेट होते हैं; मुझे यकीन है कि अन्य आईफोन उपयोगकर्ताओं के पास और भी कुछ है। प्रत्येक अपडेट के लिए विइपिंग वरीयता मूल रूप से मेरे आईफोन को अनुपयोगी बनाती है। –

7

मेरा मानना ​​है कि इस सवाल का जवाब है हाँ, यह बना रहेगा। यह ऐप्पल आईफोन ओएस प्रोग्रामिंग गाइड में एप्लिकेशन डायरेक्टरी अध्याय के तहत पूरी तरह से प्रलेखित है।

4
  1. पोस्ट किए गए प्रश्न का सीधा जवाब: हाँ।
  2. आपकी समस्या: आपके ऐप ने तर्क मुद्दों की वजह से दुर्घटनाग्रस्त हो गया हो जाता है। मान लीजिए कि आप किसी ऑब्जेक्ट को डिफॉल्ट में स्टोर करते हैं और ऐप लॉन्च (या अन्यत्र) पर इसका मूल्य जांचता है। आपके अपडेट में आप चेक या इस्तेमाल किए जाने वाले तरीके को बदल सकते हैं, उदा। आप एक मूल्य की उम्मीद करते हैं, लेकिन वस्तु शून्य है, या इसके विपरीत। इससे SIGABRT या EXC_BAD_ACCESS हो सकता है।
2

आप CoreData मॉडल था और आप अपने मॉडल और अद्यतन में कुछ बदल गया है, माइग्रेशन को प्रबंधित किए बिना, तो thats शायद कारण है कि अद्यतन पर आपका ऐप्स क्रैश हो ...

+0

मुझे उम्मीद है कि यह एक मामला हो सकता है :) NSUserdefault नहीं –

1

मैं एक ऐसी ही अनुभव है। हमारा ऐप सेटिंग्स.बंडल/रूट.पलिस्ट में एक संस्करण संख्या संग्रहीत करता है। यह आईफोन सेटिंग्स ऐप के माध्यम से प्रदर्शित हो जाता है। हम जो पाते हैं वह है कि इंस्टॉल करें पर संस्करण संख्या ऐप बंडल से लोड हो जाती है - इसलिए संस्करण संख्या सही है। एक अद्यतन पर हालांकि संस्करण संख्या बदल नहीं है। यह इंप्रेशन देता है कि उपयोगकर्ता ऐप का पिछला संस्करण चला रहा है। हमारे पास संस्करण संख्या से जुड़ा कोई तर्क नहीं है, यह सिर्फ प्रदर्शन के लिए है (दोषों का निदान करते समय इसे संपर्क केंद्र कर्मचारियों द्वारा उपयोग किया जा सकता है)।

हमारा अनुभव एनएसयूसर डीफॉल्ट साफ़ नहीं होता है जब कोई उपयोगकर्ता हमारे ऐप को अपडेट करता है, लेकिन सेटिंग डिस्प्ले को अपडेट नहीं किया जाता है।