添加在iPhone中的数据模型中添加的数据库中的属性

时间:2012-03-28 08:22:53

标签: iphone ios xcode core-data

我创建了一个由10个实体组成的数据模型。几天后,我在其中一个实体中添加了一个属性。在我运行应用程序时,应用程序崩溃了。所以,请帮我解决这个问题。                      提前致谢。

4 个答案:

答案 0 :(得分:3)

更改模型后,您必须在设备/模拟器上删除您的应用程序并重新安装。那是因为您现有的SQLite-DB不再适合现在更改的模型。

答案 1 :(得分:1)

如果你还在开发应用程序,最简单的答案就是删除并重新安装它。

如果您确实想要保留数据库的内容,Core Data可以自动从一个版本的架构迁移到另一个版本(有一些警告)。 See the documentation了解详情。

答案 2 :(得分:0)

如果您不希望应用程序崩溃 - 每次需要将属性添加到实体或实体到模型时 - 您必须创建新的模型版本并显示托管对象模型以使用该新版本。

您可以转到:Editor -> Add Model version...创建新的模型版本。然后在您的应用代理的persistentStoreCoordinator方法中启用自动迁移

NSError *error = nil;
NSURL *storeURL = <#The URL of a persistent store#>;
NSPersistentStoreCoordinator *psc = <#The coordinator#>;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

BOOL success = [psc addPersistentStoreWithType:<#Store type#>
                    configuration:<#Configuration or nil#> URL:storeURL
                    options:options error:&error];
if (!success) {
    // Handle the error.
}

答案 3 :(得分:-1)

你必须让应用程序清理所有目标,然后构建并从模拟器中删除应用程序,然后构建应用程序