Bây giờ tôi đã phát hiện ra rằng điều này khá đơn giản - một khi bạn biết nơi để tìm.
Trong AppDelegate của mình, tôi đã thiết lập NSPers phù hợpStoreCoordinator - và bạn cần thêm một số tùy chọn vào điều này để yêu cầu nó xử lý tự động di chuyển:
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);
}
Sau đó, bạn cần thực hiện một thủ thuật nhỏ trong xCode:
- Chọn tệp xcdatamodel của bạn
- Chọn Menu thiết kế ở trên cùng - sau đó chọn Mô hình dữ liệu - sau đó chọn Thêm phiên bản mô hình
- Sau đó, tệp xcdatamodel của bạn sẽ được chuyển vào một thư mục mới có cùng tên với tệp xcdatamodel của bạn nhưng có phần mở rộng là xcdatamodeld - sẽ có tệp thứ hai trong thư mục này với số 2 trong tên. Chọn tệp mới và sau đó Thiết kế-> Mô hình dữ liệu-> Đặt phiên bản hiện tại ( trong Xcode 4, bạn làm điều này )
- Nếu bạn đã thực hiện các thay đổi khiến dự án của bạn không tương thích - hãy loại bỏ những thay đổi này khỏi tệp xcdatamodel ban đầu. Nếu bạn vẫn chưa thực hiện thay đổi - thì chỉ cần chỉnh sửa tệp 2.xcdatamodel (tệp bạn vừa tạo phiên bản hiện tại).
- Bây giờ khi bạn cài đặt phiên bản này vào một thiết bị có kiểu cũ - nó sẽ tự động nâng cấp kiểu đó lên kiểu mới.
Điều này có vẻ tuyệt vời và đơn giản như tôi muốn - nhưng tôi nghĩ bạn cần phải cẩn thận trong quá trình phát triển khi bạn thay đổi một mô hình - nếu không bạn sẽ phải tạo một phiên bản mới cho mỗi thay đổi.
Tôi nghĩ những gì tôi sẽ làm là tôi sẽ giữ tất cả các tệp đã thay đổi và sau đó khi tôi sẵn sàng triển khai bản cập nhật của mình, tôi sẽ xóa tất cả các tệp ở giữa và chỉ triển khai với các mô hình cũ nhất và mới nhất.
CẬP NHẬT (15/07/2011):
Cảm ơn @ rockstarberlin đã chỉ ra rằng có tài liệu cập nhật tại apple:
Xcode 4: Đặt phiên bản hiện tại của mô hình đối tượng được quản lý
Cập nhật: 19/08/2013 liên kết tốt hơn:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersinstall/Articles/vmModelFormat.html