我差不多完成了我的第一个iOS应用程序的1.1版本,其中我对我的核心数据模型进行了两处小改动。更具体地说,我在我的一个表中添加了两个属性。这是我的第一个核心数据应用程序,因此我对实时应用程序进行了第一次核心数据更新,而且我对运送可能对我当前用户无效的代码感到有些不安。由于这是一个小更新,我猜测苹果自动迁移方法会做,但我不想猜。
相关代码如下所示:
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
//NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
在1.1中我添加了NSDictionary *options
。
在我的视图控制器中,我确保所需的行不是这样的:
if (currentPage.inputType == @"drawing") {
[pageView changeToDrawing];
} else if (currentPage.inputType == @"text") {
[pageView changeToText];
} else {
currentPage.inputType = @"text";
[pageView changeToDrawing];
}
基本上,这些变化是否足够,还是我必须做其他事情?
答案 0 :(得分:24)
Here is a very helpful article可以回答您的问题。
总而言之,您需要为项目添加新的模型版本。这对于迁移过程是必要的。
修改强>
上面的链接已更改,并会将您重定向到以下链接:Core Data Model Versioning and Data Migration
如果其他所有方法都失败了,请点击:Core Data Model Versioning and Data Migration apple developer。