【问题标题】:Rename Core Data Entity without Loss of Data重命名核心数据实体而不丢失数据
【发布时间】:2020-10-28 20:37:34
【问题描述】:

我正在尝试使用 Swift、iOS 13.0+ 重命名核心数据实体(不是属性)。我目前有一个名为 Image 的核心数据实体,但由于 SwiftUI 在该名称下有一个保留视图,我正在尝试将实体重命名为 FileImage

我已关注此post,但该实体下的数据不再保留在设备上/映射到新实体。关于如何重命名核心数据实体而不丢失该实体中的数据的任何建议?

【问题讨论】:

  • 您需要为实体设置一个重命名标识符。关于这个问题还有另一个答案。
  • 不幸的是,这仍然没有将设备上当前的数据映射到新的实体名称。

标签: ios swift core-data


【解决方案1】:

重命名 CoreData 实体:

  1. 首先为您的实体设置哈希修饰符和重命名 ID。重命名 ID 应与之前的实体名称匹配。

  1. 在文件导航器中选择您的 .xcdatamodel

  2. 选择“添加模型版本”

  3. 在文件导航器中展开 .xcdatamodel:

  4. 在文件属性中选择新版本的 .xcdatamodel:

  5. 然后重命名实体名和实体类名:

在此之后,您应该在所有项目中重命名您的实体。

【讨论】:

    【解决方案2】:

    在这里发布给需要重命名 CoreData 实体的其他人(以避免与 SwiftUI 保留名称冲突)。

    更改实体的类名称(在数据模型检查器中的类下),但不要更改实体的名称。

    您现在必须将整个代码中使用的实体名称更改为新的更新类名称。 (FileImage -> Image),但 CoreData 将不再与 SwiftUI 保留关键字冲突,同时保留您的所有数据。

    【讨论】:

    • 您的问题说您想重命名实体,但您的回答说不重命名实体。这就是其他答案没有帮助的原因,因为他们回答的是您提出的问题,而不是您需要回答的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多