2013-01-08 24 views
10

मैं कुछ भी नहीं migration rules के बारे में managedObjects relationshipCoreData प्रवास -

मेरे प्रारंभिक CoreData मॉडल की deletion rule बदलने के मामले में एक रिश्ते के साथ एक इकाई निहित पाया है रिश्तों के नियमों को हटा दें। इस संबंध का डिलीट नियम cascade था। मुझे इस व्यवहार को Nullify में बदलना पड़ा।

इसलिए मैंने new version of my coredata model बनाया है लेकिन बिना हल्के प्रवासन के और यह अभी भी काम करता है। इसलिए मैं घायल हूं कि मुझे अपने मॉडल का एक नया संस्करण जोड़ना चाहिए था या यदि हटाना नियम बदलना (उदाहरण के लिए cascade से nullify) किसी भी माइग्रेशन को प्रभावित/आवश्यकता नहीं है।

कोई सुझाव?

+0

कोई हल्का प्रवास नहीं? तो आप निरंतर स्टोर जोड़ते समय 'NSMigratePersistentStoresAutomaticallyOption' या' NSInferMappingModelAutomaticallyOption' का उपयोग नहीं करते हैं? समन्वयक addPersistentStoreWithType: –

+0

नहीं मैं अपने स्टोर बनाने के लिए निम्नलिखित का उपयोग कर रहा NSSQLiteStoreType विन्यास: storeURL विकल्प:: यूआरएल शून्य त्रुटि शून्य: और त्रुटि] – Alexander

उत्तर

16

विलोपन नियम क्रम पर कोर डाटा के व्यवहार निर्दिष्ट: यदि एक वस्तु हटा दी जाती है, अन्य रिश्तों शून्य पर सेट किया जा सकता है, या संबंधित वस्तुओं के रूप में अच्छी तरह से हटाया जा सकता है।

इसलिए मुझे लगता है कि हटाना नियम केवल कोर डेटा मॉडल में संग्रहीत हैं, लेकिन लगातार स्टोर फ़ाइल में नहीं।

यह सत्यापित करने के लिए, मैंने समान इकाइयों के साथ 2 कोर डेटा मॉडल से 2 स्टोर फ़ाइलें बनाई हैं, लेकिन अलग-अलग हटाने नियम। लगातार स्टोर में NSStoreModelVersionHashesmetadata शब्दकोश समान थे।

वास्तव में, दोनों SQLite फ़ाइलें "Z_METADATA" तालिका में "Z_UUID" के एकमात्र अपवाद के समान थीं, जो लगातार स्टोर फ़ाइल के NSStoreUUID है।

इसके अलावा, addPersistentStoreWithType:... विफल हो जाएगा यदि लोड किए गए स्टोर के संस्करण हैंश मॉडल में हैंश से अलग हैं।

इसलिए हटाने नियमों को बदलना एक समस्या नहीं होनी चाहिए।

+0

है यही है कि मैं क्या अनुभव - समान हैश। मैं सिर्फ घायल था, क्योंकि सेब डॉक्टर में मैंने पाया कि हटाए गए नियमों को प्रासंगिक होना चाहिए: [...] प्रत्येक इकाई में प्रत्येक प्रॉपर्टी के लिए, निम्न गुण बराबर होना चाहिए: नाम, isOptional, isTransient, isReadOnly, विशेषताओं के लिए विशेषता टाइप, और संबंधों के लिए गंतव्य एंटीटी, मिनीकाउंट, maxCount, deleteRule, और उलटा रिश्ते [...]! तो क्या आप न तो बदलाव के लिए एक नया संस्करण तैयार करेंगे? मुझे किसी नए का कोई फायदा नहीं दिख रहा है ... – Alexander

+0

@Alexander: मुझे यह स्वीकार करना होगा कि मैंने प्रलेखन को नहीं देखा है (क्या आप मुझे स्थान दे सकते हैं?), मैंने अभी वर्णन के रूप में इसका परीक्षण किया है। और आपने परीक्षण किया है कि 'addPersistentStoreWithType:' काम करता है, इसलिए मुझे कोई समस्या नहीं दिखाई देती है। –

+0

यहां आप जाएं (नीचे पृष्ठ 8): https://developer.apple.com/library/mac/documentation//Cocoa/Conceptual/CoreDataVersioning/CoreDataVersioning.pdf – Alexander