应用程序更新之间的 CoreData,表示默认数据刷新

Posted

技术标签:

【中文标题】应用程序更新之间的 CoreData,表示默认数据刷新【英文标题】:CoreData between app updates, signal a default-data refresh 【发布时间】:2013-02-04 18:04:30 【问题描述】:

在处理 CoreData 时,我遇到了一些问题,我正试图将其扼杀在萌芽状态,以便将来对系统进行校对。一个简单的事实是,我以前从未做过这样的事情(即使用 CoreData)。虽然我已经设法弄清楚如何在应用程序中使用它,但我需要知道一种体面的做法,以在版本之间指示应用程序,默认数据需要在首次应用程序启动时刷新。

所以现在,在我的 AppDelegate 中,我设置了我的托管对象上下文,并执行了一个获取请求以查看特定表/实体中是否有任何记录。我只希望在首次启动时发生这种情况,所以我不会在每次应用程序启动时不断重写数据库的内容。无论如何,所以它继续使用对象模型来处理在有问题的实体之间插入数据(有一些)

现在,对于这个版本的应用,它会在没有 API 的情况下进入商店(这是一个遥远的未来),但在发布到应用商店的版本之间,我们可能必须更新实体中的特定信息(例如: 价格),我再次只希望在应用启动时进行此刷新。此外,架构可能会更改,我不确定是否或何时更改,但我想确保这可以适应这种情况以防万一。

我想,对 coredata “添加模型版本”进行版本控制可以解决问题,将新的 db 版本设置为活动版本,但是当我在模拟器中启动应用程序时,没有任何反应告诉我里面的数据正在保留。

任何帮助我应该做些什么来适应这将不胜感激。谢谢!

【问题讨论】:

我不知道你在问什么。很简单,“我如何知道我的应用程序的特定版本第一次启动的时间”? 我已经知道了。我要求的是一种方法,关于如何强制执行默认提供的数据刷新到实体之后第一次启动之后从应用商店的更新未来,所有事情都会考虑架构更新和默认数据的更新。 因此,您有一组默认数据,这些数据可能会在版本之间发生变化。在这些情况下,您希望在首次启动新版本时删除/重新插入和/或更新默认数据。对吗? 【参考方案1】:

您应该会发现核心数据模型版本控制和数据迁移指南很有用:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

您可能还会发现Method for import initial data with coredata 很有用。

【讨论】:

谢谢,我去看看!

以上是关于应用程序更新之间的 CoreData,表示默认数据刷新的主要内容,如果未能解决你的问题,请参考以下文章

静态应用程序数据和可更新用户数据与 Core Data 之间的关系

如何在 coredata/NSManagedObject 模型数据更改与应用程序用户界面之间进行紧密耦合?

处理来自服务器的 JSON 数据并添加/更新 CoreData 中的对象

核心数据:如何在两个 NSManagedObjectContext 之间合并插入/更新/删除,同时将合并保持为可撤消的步骤?

在 Core Data 存储之间切换

使用 Coredata 一起更新特定值(在所有表中通用)