使用核心数据中的新数据升级应用程序

问题描述:

我在升级App Store中的应用程序时遇到问题。 这个应用程序有一个100个记录的核心数据库。在我的新版本中,我想用相同的模式上传一个新的数据库,但是有101条记录,我希望在用户更新应用程序时显示新数据。使用核心数据中的新数据升级应用程序

根据我的理解,如果我只是更新核心数据中的数据,则旧数据库将保留,访问新数据的唯一方法是解除应用并重新安装。

您是否有任何建议强制升级后手机上安装的应用程序使用新的核心数据?

该应用程序是否有一个sqlite文件包的一部分?如果是这样,你可以检查核心数据中有多少行。如果是100,那么将新的sqlite文件从bundle复制到Documents目录。 This link might help.

+0

如果用户在核心数据表中更改了某些值,并且想要合并我的修改和来自用户的修改,那么该怎么办? 想象一下,用户在核心数据的相应表格中保存了他的收藏夹。想象一下,我想更新其他表格中的值。 任何想法??? – yassassin 2012-04-14 20:24:55

+0

你可以有多个NSManagedObjectContext对象。为您的包中默认的sqlite文件创建一个额外的NSManagedObject。对于默认sqlite文件中的每个项目,检查用户是否修改了它。如果他们有,然后跳到下一个。如果不是,则更换这些值。如果该项目不存在,您可以添加它。 – bbarnhart 2012-04-14 20:40:13

+0

我无法摆脱这个问题。作为一种解决方法,我在我的软件包中包含了一个名称不同的新数据库,因此第一次安装和使用该数据库而不是旧数据库。但我知道以这种方式,我将丢失用户修改的记录。 根据我对您的建议的理解,我必须在我的包中插入新旧数据库,并使用第二个数据库的修改记录更新新数据库。你说我必须使用两种不同的上下文......但是如何?你有一些例子或教程吗?提前致谢!! – yassassin 2012-04-15 16:01:34