我需要使用一个托管对象预先填充我的核心数据库。
目前我正在检查AppDelegate是否是应用程序运行的最短时间,然后添加对象,如下所示:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL firstTime = [defaults boolForKey:@"firstTime"];
if (firstTime) {
[dataManager insertManagedObject:myManagedObect];
[defaults setBool:NO forKey:@"firstTime"];
[defaults synchronize];
}
insertManagedObject
方法检查managedObject是否已存在于数据库中。
它工作正常,但我担心在未来的应用更新中,这可能会给我带来一些麻烦,主要是因为我改变了我的数据模型并添加了新的数据模型版本。
这样做的最佳方法是什么?
答案 0 :(得分:1)
为什么不执行获取请求,看看商店是否已经存在 包含该托管对象?例如为其设置特定标识符 管理对象......
根据我的评论,您可以设置针对您的实体的获取请求,并查看商店是否已有实例。
这很容易实现。
如果需要查询特定对象,可以为实体设置属性标识符(即guid),并使用谓词查看具有特定guid的对象是否存在。
如果您分享其他一些细节,我可以给您其他建议......