2016-04-19 7 views
5

मैं नए संस्करण के लिए CoreData विस्थापित करने की कोशिश की, मैं इस कदम के अनुसरण कर रहा हूं:पुराने कोर डेटा को आसानी से कैसे हटाएं और नया पुनर्निर्माण कैसे करें?

अगर आप किसी भी परिवर्तन करने से पहले एक नया मॉडल संस्करण (name.xcdatamodeld तो संपादक-> जोड़ें मॉडल संस्करण का चयन करें) जोड़ें ऐप स्टोर में सबमिट किया गया एक ऐप पहले से ही है जो पहले मॉडल संस्करण का उपयोग कर रहा है।

फिर, मानचित्रण मॉडल का चयन करें, स्रोत मॉडल (मॉडल संस्करण जो प्रस्तुत App का उपयोग किया जाता है) गंतव्य मॉडल के रूप में, कोर डाटा टैब से एक नई फ़ाइल जोड़ें (मॉडल संस्करण है जिसमें आप परिवर्तन किया है)

source

लेकिन मेरा डेटा ज्यादातर छवियां और ऐप क्रैश है क्योंकि इसमें बहुत सारी मेमोरी होती है। तो मैं पुराने डेटा मॉडल और उसके डेटा को हटाना चाहता हूं और जब उपयोगकर्ता अपना ऐप अपडेट करता हूं तो खाली नया मॉडल डेटा बनाना चाहता हूं। यह कैसे करना है?

उत्तर

3

यदि डेटा मॉडल बदलता है तो आप आसानी से जांच सकते हैं कि डेटाबेस फ़ाइल का कौन सा मॉडल है। यदि यह नया नहीं है, तो स्टोर कोऑर्डिनेटर में NSFileManager के साथ निर्दिष्ट फ़ाइल को हटाएं और अपने स्टोर कोऑर्डिनेटर और NSManagedContext को फिर से एक नया बनाने के लिए इनिट करें।

कुछ इस तरह (नहीं परीक्षण किया कोड):

var error: NSError 
var applicationDocumentsDirectory: NSURL = NSFileManager.defaultManager().URLsForDirectory(NSDocumentDirectory, inDomains:NSUserDomainMask).lastObject 
let storeURL: NSURL = applicationDocumentsDirectory.URLByAppendingPathComponent("Database.sqlite") 
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error) 

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

फिर आप उपरोक्त डेटाबेस को हटा सकते हैं या सभी ऑब्जेक्ट्स को हटा सकते हैं और उन्हें हटा सकते हैं।

+0

क्या हर बार उपयोगकर्ता ऐप खोलने पर कोर डेटा का पुनर्निर्माण करेगा? –

+1

@AldoLazuardi जब आप एक नया डेटाबेस चाहते हैं तो यह आपके ऊपर है। एक विकल्प एक टेक्स्ट फ़ाइल बनाना होगा जिसमें आप अपने डेटाबेस के संस्करण को सहेज लेंगे। यदि संस्करण बहुत पुराना है और उसे पुनर्निर्मित करना है तो आप स्टोर फ़ाइल को हटा दें और एक खाली बनाएं। – Binarian

+0

संबंधित स्टोर फ़ाइल के साथ -shm और -wal फ़ाइलों को हटाएं –

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