【发布时间】:2015-11-13 13:39:27
【问题描述】:
我们的应用有一个基于单个 coredata 模型的 coredata 存储。有只读数据,也有读写数据。
只读数据已预加载并与应用程序捆绑在一起,因此在全新安装时,此数据库将复制到应用程序沙箱,并从那里通过 web 服务更新数据库(即只有更改的数据将从 Web 服务更新,从而减少传输的数据)。
现在我们需要向只读实体添加更多属性。
轻量级迁移将有助于轻松升级架构,但问题在于新数据,因为我们正在向所有只读实体添加新属性,所有数据记录都已更改,并且网络服务同步可能需要大量时间下载和更新数据。为避免这种情况,我们将更新的数据与应用程序捆绑在一起(这将解决全新安装的问题)。但是对于正在升级应用程序的用户,是否有一种标准机制可以从捆绑的数据库中复制只读实体并将这些实体更新到沙箱中的现有数据库,以便他们获得更新的只读数据以及他们的读取- 写入数据保持不变。
更新
这是场景,
我将 X.sqlite 与 proj 捆绑在一起(具有新架构),如果 X.sqlite 在 doc dir 中不存在,则我将其复制并从那里一切正常。现在在 App 更新场景中,X.sqilte 将已经存在于 doc dir 中并且不会被复制,并且迁移助手将迁移架构。所以现在我们有了 X.sqlite,它在 doc dir 中具有新模式,但旧数据(没有新属性)。现在我想知道是否有一种方法可以将捆绑的 X.sqlite 中的数据与 doc 目录中的数据合并。我想知道是否有合并的过程。
更准确地说
以下是实体
*存储 - 只读
*产品 - 只读
*ProductGroups - 只读
*ShopList - 基于用户
都在同一个型号和同一个商店。
现在商店/产品/产品组有额外的属性。
轻量级迁移器将迁移 X.Sqlite 的模式,以便 DB 将具有新的属性列。 现在我关心的是下一步,
我们以 Store 为例。 Store 有两个新属性 latitude 和 logitude。现在的问题是如何复制数据?步骤
将捆绑的数据库复制到具有差异名称的 doc 目录? 创建一个新的持久性协调器? 读取捆绑的数据并获取对象? 然后遍历现有的数据库?
【问题讨论】:
-
各位,我们将不胜感激
标签: ios core-data bundle core-data-migration