更新应用程序以使用先前双SQLite持久性存储的Core Data

我目前正在升级使用两个SQLite dbs的旧版iPhone闪存卡应用程序(其中一个只能通过应用程序更新,删除卡,添加卡,卡更新以及另一个用户添加它们的只读问题自己的自定义卡),而不是使用核心数据。 用于区分只读卡和用户添加卡的“Flashcard”对象的唯一属性是“isCustom”属性。 以下是我认为有必要这样做的步骤:

(首先从2个SQLite数据库更新到CoreData)

  1. 从用户自定义卡数据库获取所有自定义卡条目。
  2. 使用只读卡添加新的Core Data对象模型,然后将用户添加的自定义卡加载到此模型中。
  3. 删除旧的SQLite数据库(自定义卡数据库和只读卡数据库)。

(将来会有一个核心数据模型的更新)

  1. 从当前核心数据持久性存储中获取所有定制卡片。
  2. 将所有自定义卡迁移到新的Core Data持久性存储。

我只想确定在开始从头开始devise这个系统之前,这是否是一条路。 任何提示将不胜感激。

没有理由不能维护两个核心数据存储区:一个是只读的,用于随应用程序一起提供的内容,另一个是用于自定义条目的可写的。 我在我的一个应用程序中这样做,它允许我轻松更新每个版本随附的数据库。

我在不同的上下文中pipe理两个不同的持久存储,但是您也可以将多个持久存储附加到同一个持久存储协调器,以使它们都处于相同的上下文中。

请注意,如果您为只读的Core Data持久性存储使用相同的模型,或者将只读数据包含在一个中央持久性存储中,那么您每次都需要将该非定制数据迁移到新的模型更新。 通过将单独的只读核心数据存储与您的应用程序一起发运,您可以在一次完成时执行一次迁移,而不是让每个最终用户都在模型更新的现场执行迁移。