Sekarang saya telah mengetahui bahwa ini cukup sederhana - setelah Anda tahu di mana mencarinya.
Di AppDelegate saya, saya menyiapkan NSPersistentStoreCoordinator - dan Anda perlu menambahkan beberapa opsi ke sini untuk memberitahunya untuk menangani migrasi otomatis:
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);
}
Maka Anda perlu melakukan sedikit trik di xCode:
- Pilih file xcdatamodel Anda
- Pilih Menu Desain di bagian atas - lalu Model Data - lalu pilih Tambahkan Versi Model
- File xcdatamodel Anda kemudian akan dipindahkan ke direktori baru dengan nama yang sama dengan file xcdatamodel Anda tetapi dengan ekstensi xcdatamodeld - akan ada file kedua di direktori ini dengan 2 di namanya. Pilih file baru dan kemudian Desain-> Model Data-> Atur Versi Saat Ini ( di Xcode 4 Anda melakukan ini )
- Jika Anda telah membuat perubahan yang menyebabkan proyek Anda tidak kompatibel - hapus perubahan ini dari file xcdatamodel asli. Jika Anda belum membuat perubahan - edit saja file 2.xcdatamodel (yang baru saja Anda buat versi sekarang).
- Sekarang ketika Anda menginstal versi ini ke perangkat yang memiliki model lama - itu akan secara otomatis meningkatkan model itu ke model baru.
Ini tampak hebat dan sesederhana yang saya inginkan - tetapi saya pikir Anda perlu berhati-hati selama pengembangan saat Anda mengubah model - jika tidak, Anda harus membuat versi baru untuk setiap perubahan.
Saya pikir apa yang akan saya lakukan adalah saya akan menyimpan semua file yang diubah dan kemudian setelah saya siap untuk menerapkan pembaruan saya, saya akan menghapus semua file di antara dan hanya menerapkan dengan model terlama dan terbaru.
PEMBARUAN (15/07/2011):
Terima kasih kepada @ rockstarberlin karena menunjukkan ada dokumentasi terbaru di apple:
Xcode 4: Menyetel Versi Terkelola Model Objek Terkelola
Perbarui: 8/19/2013 tautan yang lebih baik:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html