मुझे अब पता चला है कि यह काफी सरल है - एक बार जब आप जानते हैं कि कहाँ देखना है।
मेरे AppDelegate में मैंने NSPersistentStoreCoordinator की स्थापना की - और आपको ऑटो-माइग्रेट को संभालने के लिए इसे बताने के लिए इसमें कुछ विकल्प जोड़ने की आवश्यकता है:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
फिर आपको xCode में थोड़ी ट्रिक करने की आवश्यकता है:
- अपनी xcdatamodel फ़ाइल चुनें
- शीर्ष पर डिज़ाइन मेनू चुनें - फिर डेटा मॉडल - फिर मॉडल संस्करण जोड़ें चुनें
- आपकी xcdatamodel फ़ाइल फिर आपकी xcdatamodel फ़ाइल के समान नाम के साथ एक नई निर्देशिका में स्थानांतरित हो जाएगी, लेकिन विस्तार xcdatamodeld के साथ - इस निर्देशिका में एक दूसरी फ़ाइल होगी जिसमें नाम 2 होगा। नई फ़ाइल चुनें और फिर डिज़ाइन करें-> डेटा मॉडल-> वर्तमान संस्करण सेट करें ( Xcode 4 में आप ऐसा करते हैं )
- यदि आपने पहले ही बदलाव कर लिया है जिससे आपकी परियोजना असंगत हो गई है - तो इन परिवर्तनों को मूल xcdatamodel फ़ाइल से बाहर निकालें। यदि आपको अभी तक परिवर्तन नहीं करना है - तो बस 2.xcdatamodel फ़ाइल (जिसे आपने अभी-अभी चालू संस्करण बनाया है) संपादित करें।
- अब जब आप इस संस्करण को पुराने मॉडल वाले डिवाइस पर स्थापित करते हैं - यह स्वचालित रूप से उस मॉडल को नए मॉडल में अपग्रेड कर देगा।
यह बहुत अच्छा और उतना ही सरल लगता है जितना मैं चाहता था - लेकिन मुझे लगता है कि आपको विकास के दौरान सावधानी बरतने की ज़रूरत है क्योंकि आप एक मॉडल बदलते हैं - अन्यथा आपको प्रत्येक परिवर्तन के लिए एक नया संस्करण बनाना होगा।
मुझे लगता है कि मैं क्या करूंगा कि मैं सभी परिवर्तित फ़ाइलों को रखूंगा और फिर एक बार जब मैं अपना अपडेट तैनात करने के लिए तैयार हो जाऊंगा तो मैं सभी फाइलों को बीच में हटा दूंगा और सबसे पुराने और नवीनतम मॉडलों के साथ तैनात करूंगा।
अद्यतन (15/07/2011):
सेब पर अद्यतन प्रलेखन है इंगित करने के लिए @ रॉकस्टारबर्लिन के लिए धन्यवाद :
Xcode 4: एक प्रबंधित ऑब्जेक्ट मॉडल का वर्तमान संस्करण सेट करना
अपडेट: 8/19/2013 बेहतर लिंक:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html