2009-08-12 8 views
7

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

यदि आपके पास अन्य सुझाव हैं कि बेहतर क्या है या अन्य विकल्प क्या हैं, तो कृपया मुझे बताएं।

धन्यवाद।

उत्तर

0

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

+0

यह एक बहुत पुराना उत्तर है। क्या यह अभी भी सच है? मैं prepopulated डेटाबेस को लिखने के लिए नहीं जा रहा हूँ, क्या मैं इसे सीधे संसाधनों से पढ़ सकता हूं? – Suragch

12

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

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

यह आपको कोर डेटा दस्तावेज़ में डेटा को तुरंत दर्ज और संपादित करने देगा, जिसे आप डिस्क पर सहेज सकते हैं और अपने आईफोन एप्लिकेशन में संसाधन के रूप में जोड़ सकते हैं। SQLite डेटाबेस संरचनाएं डेस्कटॉप और आईफोन कोर डेटा कार्यान्वयन के बीच पूरी तरह से संगत हैं, इसलिए मैंने पाया है कि यह आपके आईफोन कोर डेटा कोड का परीक्षण करने का एक तेज़ और आसान तरीका है।

+0

@ "ब्रैडलार्सन" ऐसा लगता है कि यह सुविधा ("कोर डेटा इकाई आइटम को दृश्य में खींच रहा है") XCode4 में बंद कर दिया गया है। – Ali

+0

क्या होता है जब आपको भविष्य में रिलीज पर डेटाबेस माइग्रेट करने की आवश्यकता होती है? क्या आपको अनिवार्य रूप से मॉडल के प्रत्येक संस्करण के लिए एक डिफ़ॉल्ट डेटाबेस पुनर्निर्माण करना होगा? मैं उत्सुक हूं कि कुछ संपत्ति सूचियों से पहले चलाने पर डेटाबेस को पॉप्युलेट करना बेहतर हो सकता है और मुझे आपकी सलाह मिलना अच्छा लगेगा। धन्यवाद ब्रैड! – iwasrobbed

+1

@iWasRobbed - उस स्थिति में, आप अपने बंडल डेटाबेस को नवीनतम संस्करण में भी माइग्रेट करेंगे। आप प्रत्येक आईओएस स्थापना के लिए समय अपग्रेड करने से बचाना चाहते हैं। मेरे मैक क्लाइंट जिन्हें मैंने इसके लिए बनाया है, नए अनुप्रयोग संस्करणों के आईओएस ऐप बंडलों में तैनाती के लिए डेटाबेस को नवीनतम स्कीमा में अपडेट करने में सक्षम हैं। –

1

मैंने इसे हल करने के प्रयासों के लिए अपने मस्तिष्क को रैक किया। मैं जो डेटाबेस के साथ आया था वह डेटाबेस को सहेजना नहीं था। इस तरह, ऐप खोले जाने पर हर बार इसे आरंभ किया जाएगा। यदि आप इसे सहेजते हैं, तो यह डुप्लिकेट जारी रहेगा।

7

कृपया कोर डाटा प्रोग्रामिंग मार्गदर्शिका देखें, या नीचे देखें (पीजी से कॉपी करें):

" कैसे मैं डिफ़ॉल्ट डेटा के साथ एक दुकान को प्रारंभ करते

वहाँ दो मुद्दों यहाँ हैं: बनाने डेटा, और यह सुनिश्चित डेटा केवल एक बार आयात किया जाता है। वहाँ डेटा बनाने के लिए कई तरीके हैं।

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

  • आप एक संपत्ति सूची-या कुछ अन्य फ़ाइल-आधारित डेटा का प्रतिनिधित्व कर सकते हैं, और इसे एप्लिकेशन संसाधन के रूप में संग्रहीत कर सकते हैं। जब आप इसका उपयोग करना चाहते हैं, तो आपको फ़ाइल खोलनी होगी और प्रबंधित ऑब्जेक्ट्स बनाने के लिए प्रतिनिधित्व को पार्स करना होगा।

आप एक दुकान बनाने के लिए एक फ़ाइल iOS पर इस तकनीक का उपयोग नहीं करना चाहिए, और केवल अगर बिल्कुल मैक ओएस एक्स पार्सिंग पर आवश्यक अनावश्यक भूमि के ऊपर पड़ता है। कोर डेटा स्टोर को ऑफ़लाइन बनाने के लिए यह बेहतर है और इसे सीधे अपने एप्लिकेशन में उपयोग करें। भी सुनिश्चित करना है कि चूक आयात किए जाते हैं केवल एक बार कई तरीके हैं:

  • आप आईओएस का उपयोग कर या मैक ओएस एक्स के लिए एक गैर दस्तावेज़ आधारित अनुप्रयोग का निर्माण कर रहे हैं, तो आप आवेदन पर एक जाँच में जोड़ सकते हैं निर्धारित करने के लिए लॉन्च करें कि आपके द्वारा एप्लिकेशन के स्टोर के लिए निर्दिष्ट स्थान पर कोई फ़ाइल मौजूद है या नहीं। यदि ऐसा नहीं होता है, तो आपको डेटा आयात करने की आवश्यकता है। के लिए एक आईओएस-आधारित उदाहरण के लिए, CoreDataBooks देखें।

  • यदि आप NSPersistentDocument का उपयोग कर दस्तावेज़-आधारित एप्लिकेशन बना रहे हैं, तो आप initWithType में डिफ़ॉल्ट प्रारंभ करें: त्रुटि:।

  • अगर वहाँ एक संभावना है कि दुकान (इसलिए फाइल) है बनाया हो सकता है, लेकिन आयात नहीं डेटा, तो आप की दुकान में एक मेटाडेटा फ़्लैग जोड़ सकते हैं। आप मेटाडेटा ( मेटाडाटा फॉरपर्सिस्टेंटस्टोर विथ्लर: त्रुटि :) से अधिक कुशलता से प्राप्त करने की जांच कर सकते हैं (और इसके लिए आपको किसी भी डिफ़ॉल्ट डेटा मानों को हार्ड कोड की आवश्यकता नहीं है)।

"

ऊपर उल्लेख किया है, आम तौर पर हम कोड के साथ एक पहले से भरा डिफ़ॉल्ट स्टोर बनाने की जरूरत है, तो एक संसाधन फ़ाइल के रूप में उपयोग, और संसाधन बंडल से इसे कॉपी निर्देशिका यदि दस्तावेज़ के लिए के रूप में coredata फ़ाइल गुम है। कृपया अपने एक्सकोड ऑर्गनाइज़र (या ऐप्पल डेवलपर सेंटर) में CoreDataBooks कोड उदाहरण खोजें, और - (NSPersistentStoreCoordinator *) persistentStoreCoordinator विधि देखें।

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