使用更新的核心数据模型更新iOS应用

时间:2012-01-02 17:08:28

标签: objective-c ios core-data

我差不多完成了我的第一个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];
}

基本上,这些变化是否足够,还是我必须做其他事情?

1 个答案:

答案 0 :(得分:24)

关于核心数据版本控制的

Here is a very helpful article可以回答您的问题。

总而言之,您需要为项目添加新的模型版本。这对于迁移过程是必要的。

修改

上面的链接已更改,并会将您重定向到以下链接:Core Data Model Versioning and Data Migration

如果其他所有方法都失败了,请点击:Core Data Model Versioning and Data Migration apple developer