生成核心数据子类后如何修复 Xcode 10 错误 'Multiple commands produce..'

How to fix Xcode 10 error 'Multiple commands produce..' after generating Core Data subclasses

我已经为我的项目创建了一个全新的核心数据模型,我想为它创建一些 NSManagedObject 子类。生成子类后 XCode 会抛出一些引用 /DerivedData 文件夹路径的错误。请参阅下面我的步骤和错误图片:

我已经尝试过清理构建、清除 DerivedData 文件夹,所有这些都是 hoo-haa。我也尝试过手动创建生成的文件,但我仍然遇到相同的错误。有人设法解决这个问题吗?

这是您与 coredata 相关的问题的解决方案

根据您的第一个屏幕截图,您可以在右侧看到 Class 下名为 Codegen 的字段,打开该下拉菜单和 select Manual/None 然后从 Editor -> Create NSManageObject Subclass 重新生成文件,问题就解决了。

我 运行 在对我的 DataModel 进行了大量编辑后遇到了同样的问题。我所有的实体都使用 Codegen Category/Extension 和子类,突然我得到了这个神秘的错误:

error: Multiple commands produce '/Library/Developer/Xcode/DerivedData/MyApp-futvjnnhiceyibabpbzhxltebhoq/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/MyApp/MyEntity+CoreDataProperties.m':

  1. Target 'MyApp' (project 'MyApp'): DataModelCodegen /Users/elisevanlooij/Documents/Project MyApp/MyApp/MyApp/MyApp.xcdatamodeld
  2. Target 'MyApp' (project 'MyApp'): DataModelCodegen /Users/elisevanlooij/Documents/Project MyApp/MyApp/MyApp/MyApp.xcdatamodeld

两天后我发现了问题:实体名称和实体名称 Class 名称在 DataModel 中不再匹配,迫使 Codegen 为一个扩展生成两个扩展 entity.Once 我解决了这个问题,扔了在 ~/Library/Developer/Xcode/DerivedData 中移除应用程序的 Intermediates 文件夹并执行 Product > Clean Build Folder,一切都再次编译得很漂亮。

错误消息在技术上是正确的,但毫无帮助。 DataModel 接口应该在它发生时立即标记它,但人们只能梦想有一天 Apple 会适当关注 Core Data。

Codegen 有三个选项:

  • Manual/None。您可以使用编辑器 >“创建 NSManagedObject 子类”菜单生成 +CoreDataClass 和 +CoreDataProperties 文件。
  • Class定义。默认选项。 Xcode 在构建过程中自动生成这两个文件。您不应将这些文件添加到您的项目中。
  • Category/Extension。 Xcode自动生成扩展+CoreDataProperties文件。所以如果使用“Create NSManagedObject Subclass”菜单生成这两个文件,需要手动移除+CoreDataProperties文件,只留下项目中的+CoreDataClass文件