加密核心数据迁移实体名称不匹配问题
Posted
技术标签:
【中文标题】加密核心数据迁移实体名称不匹配问题【英文标题】:Encrypted core data migration entity name mismatch issue 【发布时间】:2015-11-01 02:33:00 【问题描述】:我正在使用核心数据加密,并且我在 Appstore 中的应用程序的当前版本使用加密数据库。现在我计划发布新版本的应用程序并进行新的实体修改。但是在进行轻量级迁移时,我面临实体名称不匹配问题,系统无法匹配模型和数据库,因此操作失败。
我的发现如下: 在加密时,实体名称通过添加前缀来重命名。
所以如果实体名称为“Country”,则实际结果在db中为“abcCountry”。
轻量级迁移时,模型的实体名称为“Country”,无法与旧版本数据库中的实体名称匹配。
解决办法是什么。我是否需要在新版本中重命名我的实体名称。
【问题讨论】:
【参考方案1】:为了进行轻量级迁移,核心数据必须能够推断模型映射。
如果你重命名一个实体,它无法判断“新”属性是添加还是重命名。
因此,您必须通过设置renamingIdentifier
来通知核心数据属性已被重命名。
在您的情况下,如果您将属性从“Country”重命名为“abcCountry”,那么您需要修改“destination model”并将新“abcCountry”属性上的renamingIdentifier
设置为“Country”,这样它就可以推断出适当的映射。
Apple's documentation 这个很容易理解。
【讨论】:
我没有重命名任何实体。我的加密框架在内部重命名了实体。 我的理解是老版本的db应该和model匹配才可以开始迁移 对不起,你说的对我来说毫无意义。也许您应该提供实际的源模型和目标模型。 @PraveenVenugopalan 您使用的是什么加密框架?听起来它可能会导致您的问题。以上是关于加密核心数据迁移实体名称不匹配问题的主要内容,如果未能解决你的问题,请参考以下文章