2012-02-19 11 views
17

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

अब तक, इन सभी ऐप्लिकेशन NSDocumentsDirectory में डीबी की दुकान। मेरा अंतिम अपडेट सबमिट करने के बाद, गलत स्थान पर डेटा संग्रहीत करने के लिए इसे अस्वीकार कर दिया गया था। ऐप्स को अस्वीकार करने के लिए मैंने संग्रहण स्थान को NSCachesDirectory में बदल दिया। अब मुझे डर है कि कैश साफ़ हो जाएगा और उपयोगकर्ताओं के अनुकूलन मिटा देगा। ऐप अभी भी काम करेगा, डीबी फिर से बनाया जाएगा, लेकिन सभी बदले गए टेबल रीसेट हो जाएंगे, जिससे उपयोगकर्ताओं को परेशान कर दिया जाएगा।

इस प्रकार की डेटाबेस फ़ाइल को कहां रखा जाना चाहिए? क्या मैं इसे डॉक्स डीआईआर में डालने का अधिकार था? ऐप्पल के मुताबिक, डॉक्स डीआईआर "क्रिटिकल डेटा" के लिए है जो ऐप के उचित संचालन के लिए आवश्यक उपयोगकर्ता उत्पन्न डेटा या डेटा है। मुझे लगता है कि यह उस श्रेणी के अंतर्गत आता है, मेरी उपयोगकर्ता सेटिंग्स को जारी रखना उचित संचालन है, लेकिन कौन अपील का इंतजार करना चाहता है?

उत्तर

31

आईओएस के लिए ऐप्पल की फाइल सिस्टम प्रोग्रामिंग मार्गदर्शिका (application_home)/Library पथ का वर्णन करती है, "उन फ़ाइलों के लिए कस्टम उपनिर्देशिकाएं बनाएं जिन्हें आप बैक अप लेना चाहते हैं लेकिन उपयोगकर्ता के संपर्क में नहीं आते हैं"। (application_home)/Documents पथ को "इस निर्देशिका की सामग्री को फ़ाइल साझाकरण के माध्यम से उपयोगकर्ता के लिए उपलब्ध कराया जा सकता है" के रूप में वर्णित किया गया है।

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

आप वास्तव में एक और एप्लिकेशन प्रस्तुत करने से पहले पूरे file system programming guide for iOS समीक्षा करनी चाहिए।

+0

ग्रेट उत्तर, धन्यवाद! – Lkabo

0

यदि आपके डेटाबेस में वास्तव में उपयोगकर्ता द्वारा जेनरेट की गई सामग्री है, तो दस्तावेज़ निर्देशिका इसकी उचित स्थान है।

हालांकि, आप उल्लेख करते हैं कि आप "अपने उपयोगकर्ता सेटिंग्स" पर बने रह रहे हैं ... यदि आपके द्वारा जारी किया जा रहा डेटा सेटिंग्स या वरीयताओं के समान हैं, तो उन्हें डिफ़ॉल्ट उपप्रणाली में रहना चाहिए। NSUserDefaults के लिए प्रलेखन देखें।

+1

आपके उत्तर के लिए धन्यवाद, मैंने 'persisting' के साथ गलत वाक्यांश का उपयोग किया .. मेरा मतलब है कि उपयोगकर्ताओं को डेटाबेस में परिवर्तन रखना है, उपरोक्त उत्तर से पता चलता है कि निर्देशिकाओं के लाइब्रेरी सेट सही स्थान हो सकते हैं। इस पर ध्यान में मैंने पाया कि लाइब्रेरी/एप्लिकेशन समर्थन निर्देशिका एक और उपयुक्त स्थान हो सकता है। मैं वहां संग्रहीत अपने डेटा पर कुछ परीक्षण परीक्षण चलाने का प्रयास कर रहा हूं .. – Lkabo

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