生成核心数据子类后如何修复 Xcode 10 错误“多个命令产生..”

问题描述 投票:0回答:3

我为我的项目创建了一个全新的核心数据模型,我想为它创建一些 NSManagedObject 子类。生成子类后,XCode 会抛出一些引用

/DerivedData
文件夹路径的错误。请参阅下面我的步骤和错误图片:

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

xcode core-data swift4 xcode10
3个回答
42
投票

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

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


6
投票

在对我的数据模型进行大量编辑后,我遇到了同样的问题。我所有的实体都使用 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。


2
投票

Codegen 有三个选项:

  • 手动/无。您可以使用编辑器>“创建 NSManagedObject 子类”菜单来生成 +CoreDataClass 和 +CoreDataProperties 文件。
  • 类定义。默认选项。 Xcode 在构建过程中自动生成这两个文件。你不应该在你的项目中添加这些文件。
  • 类别/扩展。 Xcode 自动生成扩展+CoreDataProperties 文件。所以如果使用“Create NSManagedObject Subclass”菜单生成这两个文件,需要手动移除+CoreDataProperties文件,只留下项目中的+CoreDataClass文件
© www.soinside.com 2019 - 2024. All rights reserved.