首先让我声明这不是核心数据迁移问题。我实际上并没有考虑更改核心数据模型,而是在应用更新期间添加其他项目。
过程如下:
1) 应用程序是使用预加载的核心数据创建的。具体来说,一个清单。2) 用户可以通过更改某些值(拥有的、想要的等)来编辑此清单,但不能删除项目 3) 我发布了包含新项目的更新。用户现有数据未修改(除非我需要出于勘误目的进行更改)
我目前通过创建 NSUserDefaults 来检查用户是否收到更新,如果没有,则添加新项目。例如,如果用户从版本 1.4.3 升级到 1.4.4,应用程序将检查并添加在 1.4.4 中添加的项目。但是,如果应用程序从 1.4.0 升级到 1.4.4,它将检查并添加在 1.4.1、1.4.2、1.4.3 和 1.4.4 中添加的项目。此外,如果用户正在安装 1.4.4 版的新应用程序,则较新的项目已经是预加载的一部分,并且它知道不应用任何以前的更新。更新应用为 .plist/xml 文件
该系统目前运行良好,但它变得很麻烦,因为我现在在我的应用程序中有 38 个 plist 文件和 37 个 if/else 语句检查是否应用了更新。
一定会有更好的办法。我最初的想法是在应用程序中有两个数据库......一个我用应用程序更新更新,第二个可以由用户编辑。然后,随着每次应用程序更新,将比较数据库,并将数据库中的任何新项目复制到可编辑商店。我担心这将是一个漫长的过程(目前有超过 37,000 个项目,当我在更新中添加 400-500 个时很好,但是遍历 37,000 个项目并复制新项目是否需要很长时间?)
我想这个问题对于这个网站来说可能太主观了,如果是的话,我很抱歉,但我们将不胜感激!
扎克