Tôi đang gặp sự cố khi di chuyển nhẹ khi di chuyển từ một cửa hàng được xác định bởi hai tệp xcdatamodel riêng biệt.Dữ liệu chính - di chuyển nhẹ và nhiều tệp mô hình dữ liệu lõi (xcdatamodel)
Trong phiên bản 1.0 của ứng dụng, tôi đã có các mô hình được chia nhỏ thành mô hình phân tích, mô hình A và mọi thứ khác trong mô hình B. Khi biên dịch, các mô hình sẽ được nhóm lại với nhau và mọi thứ diễn ra suôn sẻ.
Khi làm việc trên phiên bản mới, 1.1, tôi đã nâng cấp model-B bằng cách thêm phiên bản mô hình mới vào model-B và thiết lập phiên bản mới đó là đang hoạt động.
Sự cố phát sinh khi nâng cấp từ 1.0 lên 1.1. Có vẻ như Core Data kiểm tra lưu trữ mô hình trên đĩa (được tạo bởi phiên bản 1.0) và tìm mô hình mô tả nó nhưng không thể tìm thấy mô hình SINGLE xác định toàn bộ cửa hàng (model-A chỉ bao gồm phân tích và mô hình B mọi thứ khác), do đó, nó ném lỗi "Không thể tìm thấy mô hình cho lưu trữ nguồn".
Có ai tìm thấy giải pháp để tách các mô hình nhưng vẫn cho phép nâng cấp + di chuyển nhẹ để hoạt động mà không gặp rắc rối khi xác định di chuyển tùy chỉnh không?
Dưới đây là đoạn mã sử dụng để tải mô hình:
NSArray *modelNames = [NSArray arrayWithObjects:@"model-A", @"model-B", nil];
NSMutableArray *models = [NSMutableArray array];
for (NSString *name in modelNames)
{
LogInfo(@"loading model %@", name);
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"momd"];
NSManagedObjectModel *model = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] autorelease];
[models addObject:model];
}
// combine all the separate models into one big one
objectModel = [[NSManagedObjectModel modelByMergingModels:models] retain];
NSURL *documentsDirectory = [NSURL fileURLWithPath:[SuperFileManager documentsDirectory] isDirectory:YES];
NSURL *storeURL = [documentsDirectory URLByAppendingPathComponent:@"database.sqlite"];
NSError *error = nil;
coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:objectModel];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:options
error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
Mọi cập nhật về điều này? – codepushr
@codingrogue - tiếc là không. Nhóm tôi đang làm việc vào thời điểm bị bỏ rơi bằng cách sử dụng Dữ liệu cốt lõi và tôi đã chuyển sang lập trình Android. Lấy làm tiếc. :/ – Mark