Swift 包中的 CoreData 模型

ste*_*tef 4 xcode swift swift-package-manager

我正在尝试将 CoreData 模型放入 Swift 包中,以从主代码库中提取模型代码/类。

我已执行以下操作来重新创建我遇到的问题:

  • 创建一个名为 SampleModelPackage 的新 swift 包(文件 -> 新建 -> Swift 包)
  • 创建了核心数据模型定义文件(创建文件 -> 新建 -> 文件 | iOS -> 核心数据 -> 数据模型)
  • 将其与自动生成的 SampleModelPackage.swift 一起保存在 Sources/SampleModelPackage 目录中

现在,当我尝试在 Xcode 中打开 Model.xcdatamodelId 文件时,它只向我显示一个“版本”图标(参见屏幕截图),而在项目或框架中创建核心数据模型文件将允许我编辑模型。

第二个/后续问题是我将如何正常扩展代码宝石模型文件?我将如何加载该模型定义(通常我会使用捆绑包 ID 和模型文件名)

我尝试将模型文件添加到 Package.swift 文件的资源数组中(使用 .process 和使用 .copy),如本页所述:https ://developer.apple.com/documentation/swift_packages/bundling_resources_with_a_swift_package

或者更一般地说,这可能吗?(这篇文章https://ishabazz.dev/blog/2020/7/5/using-core-data-with-swift-package-manager似乎暗示像这样打包核心数据模型是可能的)

(我使用的是 Xcode 12.4)

附件A

Joa*_*son 6

您需要在普通的 Xcode 项目中创建 Core Data 模型,然后您可以创建包并将模型拖到其中。(如果你仔细看的话,这也是链接文章中所做的,尽管没有清楚地描述)。

我相信最好的办法是手动为您的实体生成源代码文件并将它们添加到您的包中。Bundle您使用但不是Bundle.main使用来加载模型Bundle.module

  • 您可以直接在包中创建模型,但创建后必须打开和关闭项目。 (9认同)