【问题标题】:How to fix Xcode 10 error 'Multiple commands produce..' after generating Core Data subclasses如何在生成核心数据子类后修复 Xcode 10 错误“多个命令产生..”
【发布时间】:2019-07-06 16:13:53
【问题描述】:

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

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

【问题讨论】:

  • 我可以知道您为什么想要手动过程,因为 CodeData 和 XCode 将通过在 Derived Data 中创建子类来自动管理它?
  • 您不需要手动创建 NSManagedObject 子类,除非您需要任何自定义更改。 Xcode 现在会为您生成这些。
  • 将 CoreData 添加到我现有的项目时遇到了同样的问题。一个非常奇怪的事情是,即使我为那些生成的子类文件选择了 CoreData 文件夹,Xcode 仍然在顶级文件夹之外创建它们。我每次都需要手动将它们拖到我的 CoreData 文件夹中。

标签: xcode core-data swift4 xcode10


【解决方案1】:

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

根据您的第一个屏幕截图,您可以在右侧看到 Class 下名为 Codegen 的字段,打开该下拉菜单并选择 Manual/None并再次从编辑器生成文件-> 创建 NSManageObject 子类,问题将得到解决。

【讨论】:

  • 是的,Editor -> Create NSManageObject Subclass 将创建您的子类,但是当您更改、添加或删除属性时它不会更新它们。 Codegen 的 Category/Extension 会为您解决这些苦差事。
【解决方案2】:

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

错误:多个命令产生“/Library/Developer/Xcode/DerivedData/MyApp-futvjnnhiceyibabpbzhxltebhoq/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/MyApp/MyEntity+CoreDataProperties.m” :

  1. 目标“MyApp”(项目“MyApp”):DataModelCodegen /Users/elisevanlooij/Documents/Project MyApp/MyApp/MyApp/MyApp.xcdatamodeld
  2. 目标“MyApp”(项目“MyApp”):DataModelCodegen /Users/elisevanlooij/Documents/Project MyApp/MyApp/MyApp/MyApp.xcdatamodeld

两天后我发现了问题:实体名称和实体类名称在 DataModel 中不再匹配,迫使 Codegen 为一个实体生成两个扩展。一旦我解决了这个问题,就把应用程序的 Intermediates 文件夹扔到 ~/ Library/Developer/Xcode/DerivedData 并做了一个 Product > Clean Build Folder,一切都重新编译得很漂亮。

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

【讨论】:

  • 就我而言,我使用了一个实体名称和一个模型名称的相同名称,然后 Xcode 无法处理它。更改其中一个名称后,问题得到解决。
猜你喜欢
  • 2018-12-06
  • 2018-11-15
  • 1970-01-01
  • 2019-02-26
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多