gpt4 book ai didi

ios - 从 Integer 16 到 Transformable 的核心数据迁移

转载 作者:行者123 更新时间:2023-12-01 16:29:01 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个带有属性 value 的核心数据实体。我想在即将发布的版本中将此属性的类型从 Integer 16 更改为 Transformable

现在,在设置持久存储协调器时,我将以下内容作为选项:

let options: [NSString: Bool] = [
NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]

try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options) ...

现在,我已经创建了我的核心数据模型的第二个版本,其中包括对 value 属性的更新,并且没有其他更改。当我尝试构建时,出现以下错误:

CoreData: error: -addPersistentStoreWithType:SQLite ... Persistent store migration failed, missing mapping model

再往下,这个:

Can't find or automatically infer mapping model for migration ... Source and destination attribute types are incompatible.

显然 CoreData 不能自动从 Integer 16 映射到 Transformable?我该如何解决这个问题?

最佳答案

没有关于如何将现有整数值转换为二进制 blob 的明显规则,因此 Core Data 在这里举 watch 示它不知道您想要它做什么。将属性转换为不同的数据类型需要您做更多的工作。

如果您实际上是在转换数据——例如,您希望新的二进制 value 以某种方式从旧整数 value 派生——那么您需要创建映射模型并以相对困难的方式进行迁移。其中一部分将涉及您进行整数到二进制的转换。这里有很多要了解的,所以我会向您推荐 Apple's Core Data migration guide获取更多信息。

但是如果新的二进制独立于旧整数——意味着新数据不是派生的 来自旧数据,但可以完全替代旧数据——您可以让事情变得简单。如果是这种情况,请不要重命名该属性。创建一个具有不同名称、valueBlob 或其他名称的新属性,并删除 value 属性。自动轻量级迁移可以处理添加和删除属性,因此它可以处理该更改。

关于ios - 从 Integer 16 到 Transformable 的核心数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33218992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com