2011-08-14 12 views
10

मेरे ऐप में इंटरनेट के माध्यम से एक बड़ी जेसन फ़ाइल प्राप्त करना शामिल है, और उसके बाद इसे कोर डेटा में पार्स करना शामिल है।कोर डेटा का पूर्ववर्ती संस्करण?

ठीक है, लेकिन मैं अपने ऐप में इस कोर डेटा डेटाबेस का पहले से भरा संस्करण कैसे प्राप्त कर सकता हूं, इसलिए जब वे इसे लॉन्च करते हैं तो वहां होता है। और उपयोगकर्ता बाद में इसे रीफ्रेश करने का निर्णय ले सकता है।

उत्तर

2

कोर डेटा डेटाबेस सिर्फ एक SQLite डेटाबेस फ़ाइल है। आप इसे अपने मुख्य बंडल में वितरित कर सकते हैं और उसके बाद इसे अपने लगातार स्टोर समन्वयक के साथ जोड़ने से पहले अपने दस्तावेज़ फ़ोल्डर में कॉपी कर सकते हैं।

9

Ray Wenderlich's site पर प्री-लोडिंग के बारे में एक उचित ट्यूटोरियल है।

आम तौर पर - एक अलग प्रोजेक्ट बनाएं, JSON फ़ाइल को कोर डेटा डेटाबेस में पार्स करें। अपनी असली परियोजना बनाएं, ऑब्जेक्ट मॉडल और डेटाबेस फ़ाइल को इस नई परियोजना में कॉपी करें।

अब, ऐप शुरू होने पर, जांचें कि डेटाबेस की निर्देशिका में डेटाबेस मौजूद है या नहीं, और यदि ऐसा नहीं होता है, तो अपने प्रीफ़िल्ड को अपने ऐप बंडल से कॉपी करें।

सुनिश्चित करें कि पर्सिस्टेंट स्टोर समन्वयक दस्तावेज़ फ़ोल्डर में डेटाबेस के साथ काम करता है, न कि ऐप बंडल में से एक।

अद्यतन जून 2012

मैं GitHub पर एक छोटा सा उदाहरण परियोजना PromNight जो एक iPad परियोजना और एक ओएस एक्स परियोजना के साथ एक Xcode कार्यस्थान का उपयोग दर्शाता है कोर डेटा के लिए डेटा को पहले से लोड करने के लिए बुलाया है। यह एक ऑब्जेक्ट मॉडल का उपयोग करता है जो दो अनुप्रयोगों के बीच साझा किया जाता है जो प्रीलोडिंग के दौरान सिंक में परिवर्तन रखने में मदद करता है।

+1

रे वेंडरलिच के लिए +1। – Moshe

4

कोर डेटा एक बैकिंग स्टोर का उपयोग करता है, जो अनिवार्य रूप से एक स्क्लाइट डेटाबेस (या, मैक ओएस पर, वैकल्पिक रूप से एक एक्सएमएल फ़ाइल) है। आपको बस उस फ़ाइल को अपने ऐप के बंडल में जोड़ना चाहिए और उसे ऐप से भेजना चाहिए। जहां तक ​​डेटाबेस में डेटा हो रही के रूप में, यहाँ मैं क्या कर सकता है:।

  1. तुम्हारे पास जो कुछ भी प्रारूप में
  2. भागो कि कोड से डेटा आयात करने के लिए कुछ कोड लिखें।
  3. डिवाइस से या सिम्युलेटर से sqlite फ़ाइल को कॉपी करें।
  4. एक्सकोड में अपनी प्रोजेक्ट में नव निर्मित स्क्लाइट फ़ाइल जोड़ें।

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

#ifdef kImportTarget 

//run core data import 

#else 

// run the Core Data stack setup from an existing file 

#endif 
+0

आईओएस पर, मुझे नहीं लगता कि आपके पास एक्सएमएल बैकिंग स्टोर का विकल्प है। हालांकि यह मैक ओएस के लिए एक विकल्प है। – Abizern

+0

@Abizern - क्या आप निश्चित हैं? शायद आप दस्तावेज़ों से उद्धरण पा सकते हैं? – Moshe

+0

हां, मुझे यकीन है कि http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html जैसा कि यह कहता है - एक्सएमएल स्टोर आईओएस में उपलब्ध नहीं है। – Abizern