重命名核心数据实体而不丢失数据
Posted
技术标签:
【中文标题】重命名核心数据实体而不丢失数据【英文标题】:Rename Core Data Entity without Loss of Data 【发布时间】:2020-10-28 20:37:34 【问题描述】:我正在尝试使用 Swift、ios 13.0+ 重命名核心数据实体(不是属性)。我目前有一个名为 Image
的核心数据实体,但由于 SwiftUI 在该名称下有一个保留视图,我正在尝试将实体重命名为 FileImage
。
我已关注此post,但该实体下的数据不再保留在设备上/映射到新实体。关于如何重命名核心数据实体而不丢失该实体中的数据的任何建议?
【问题讨论】:
您需要为实体设置一个重命名标识符。关于这个问题还有另一个答案。 不幸的是,这仍然没有将设备上当前的数据映射到新的实体名称。 【参考方案1】:重命名 CoreData 实体:
-
首先为您的实体设置哈希修饰符和重命名 ID。重命名 ID 应与之前的实体名称匹配。
在文件导航器中选择您的 .xcdatamodel
选择“添加模型版本”
在文件导航器中展开 .xcdatamodel:
在文件属性中选择新版本的 .xcdatamodel:
然后重命名实体名和实体类名:
在此之后,您应该在所有项目中重命名您的实体。
【讨论】:
【参考方案2】:在这里发布给需要重命名 CoreData 实体的其他人(以避免与 SwiftUI 保留名称冲突)。
更改实体的类名称(在数据模型检查器中的类下),但不要更改实体的名称。
您现在必须将整个代码中使用的实体名称更改为新的更新类名称。 (FileImage
-> Image
),但 CoreData 将不再与 SwiftUI 保留关键字冲突,同时保留您的所有数据。
【讨论】:
您的问题说您想重命名实体,但您的回答说不重命名实体。这就是其他答案没有帮助的原因,因为他们回答的是您提出的问题,而不是您需要回答的问题。以上是关于重命名核心数据实体而不丢失数据的主要内容,如果未能解决你的问题,请参考以下文章