我想用 2 个 CoreData 数据库进行迁移。我已经阅读了苹果开发者文档。
对于第一个数据库,我在新版本的数据库中添加了一些属性(字符串、整数和日期属性)。按照所有步骤,我已经成功完成了第一个迁移。
但是在第二个数据库中,我还在新版本的数据库中添加了属性(字符串、整数、日期、可转换和二进制数据属性)。并且按照所有步骤(如第一个数据库),系统返回错误(134130)。
这是代码:
if (persistentStoreCoordinator_) {
PMReleaseSafely(persistentStoreCoordinator_);
}
// Notify
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:GCalWillMigrationNotification object:self];
//
NSString *sourceStoreType = NSSQLiteStoreType;
NSString *dataStorePath = [PMUtility dataStorePathForName:GCalDBWarehousePersistentStoreName];
NSURL *storeURL = [NSURL fileURLWithPath:dataStorePath];
BOOL storeExists = [[NSFileManager defaultManager] fileExistsAtPath:dataStorePath];
//
NSError *error = nil;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
[persistentStoreCoordinator_ addPersistentStoreWithType:sourceStoreType
configuration:nil
URL:storeURL
options:options
error:&error];
if (error != nil) {
abort();
}
错误不是零,以下是日志:
Error Domain=NSCocoaErrorDomain Code=134130 "操作 无法完成。(可可错误 134130。)“用户信息 = 0x856f790 {URL=file://localhost/Users/greensun/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/D10712DE-D9FE-411A-8182-C4F58C60EC6D/Library/Application%20Support/XXX/XXX.sqlite, 元数据={类型=不可变字典, 计数 = 7,条目 => 2:{内容 = "NSStoreModelVersionIdentifiers"} = {type = immutable, count = 1, values = ( 0 : {contents = ""} )} 4 : {contents = "NSPersistenceFrameworkVersion"} = {value = +386, type = kCFNumberSInt64Type} 6: {内容= "NSStoreModelVersionHashes"} = {type = immutable dict, count = 2, entries => 0 : {contents = "XXX"} = {length = 32, capacity = 32, bytes = 0xfdae355f55c13fbd0344415fea26c8bb ... 4c1721aadd4122aa} 1: {contents = "XXX"} = {length = 32, capacity = 32, bytes = 0x7676888f0d7eaff4d1f844343028ce02 ... 040af6cbe8c5fd01} } 7 : {内容 = “NSStoreUUID”} = {内容 = “51678BAC-CCFB-4D00-AF5C-8FA1BEDA6440”} 8:{contents = “NSStoreType”} = {contents = “SQLite”} 9:{contents = “_NSAutoVacuumLevel”} = {contents = “2”} 10:{contents = "NSStoreModelVersionHashesVersion"} = {值 = +3,类型 = kCFNumberSInt32Type} }, reason=找不到源存储的模型}
我尝试了很多解决方案,但它不起作用。我只是将更多属性添加到 2 个新版本数据库中,并成功迁移一次。