ตอนนี้ฉันพบแล้วว่ามันค่อนข้างง่าย - เมื่อคุณรู้ว่าจะต้องมองหาที่ไหน
ใน 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 ในชื่อ เลือกไฟล์ใหม่แล้ว Design-> Data Model-> Set Current Version ( ใน Xcode 4 คุณทำสิ่งนี้ )
- หากคุณได้ทำการเปลี่ยนแปลงที่ทำให้โปรเจ็กต์ของคุณเข้ากันไม่ได้ให้นำการเปลี่ยนแปลงเหล่านี้ออกจากไฟล์ xcdatamodel ดั้งเดิม หากคุณยังไม่ได้ทำการเปลี่ยนแปลงให้แก้ไขไฟล์ 2.xcdatamodel (ไฟล์ที่คุณเพิ่งสร้างเป็นเวอร์ชันปัจจุบัน)
- ตอนนี้เมื่อคุณติดตั้งเวอร์ชันนี้ลงในอุปกรณ์ที่มีรุ่นเก่า - จะอัปเกรดรุ่นนั้นเป็นรุ่นใหม่โดยอัตโนมัติ
สิ่งนี้ดูดีและเรียบง่ายอย่างที่ฉันต้องการ แต่ฉันคิดว่าคุณต้องระมัดระวังในระหว่างการพัฒนาเมื่อคุณเปลี่ยนโมเดลมิฉะนั้นคุณจะต้องสร้างเวอร์ชันใหม่สำหรับการเปลี่ยนแปลงแต่ละครั้ง
ฉันคิดว่าสิ่งที่ฉันจะทำคือฉันจะเก็บไฟล์ที่เปลี่ยนแปลงทั้งหมดไว้จากนั้นเมื่อฉันพร้อมที่จะปรับใช้การอัปเดตของฉันฉันจะลบไฟล์ที่อยู่ระหว่างนั้นทั้งหมดและปรับใช้กับรุ่นที่เก่าที่สุดและล่าสุดเท่านั้น
อัพเดท (15/07/2554):
ขอบคุณ @ rockstarberlin ที่ชี้ให้เห็นว่ามีเอกสารอัปเดตที่ apple:
Xcode 4: การตั้งค่าเวอร์ชันปัจจุบันของ Managed Object Model
อัปเดต: 19/8/2556 ลิงค์ที่ดีกว่า:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html