'文件名被用来区分相同名称的私人声明'的错误

我得到这个错误在Swift中生成Xcode 8.1中的NSManagedObject。

:0:error:filename“DemoOne + CoreDataClass.swift”使用了两次:'/ Users / Swasidhant / Desktop / demo again / DemoOne + CoreDataClass.swift'和'/ Users / Swasidhant / Library / Developer / Xcode / DerivedData / demo_again- hiinrbwwbmyfbrbctsfdzvudkkuy / Build / Intermediates / demo again.build/Debug-iphonesimulator/demo again.build/DerivedSources/CoreDataGenerated/Model/DemoOne+CoreDataClass.swift':0:注意:文件名用于区分具有相同名称的私有声明:0 :error:filename“DemoOne + CoreDataProperties.swift”使用了两次:'/ Users / Swasidhant / Desktop / demo again / DemoOne + CoreDataProperties.swift'和'/ Users / Swasidhant / Library / Developer / Xcode / DerivedData / demo_again-hiinrbwwbmyfbrbctsfdzvudkkuy / Build / Intermediates / demo again.build/Debug-iphonesimulator/demo again.build/DerivedSources/CoreDataGenerated/Model/DemoOne+CoreDataProperties.swift':0:note:filenames用于区分具有相同名称的私有声明Command / Applications / Xcode.app/Contents/Developer/Toolchains/XcodeDefaul t.xctoolchain / usr / bin / swiftc失败,退出代码1

我search了这个,并得到了答案,说这个文件可能会在项目中出现两次,这不是我的情况。 我遇到的另一个解决scheme是从构build阶段删除文件,并再次添加。 这也不起作用。 它是一些build立设置configuration错误? 或者是其他东西?

这里是与Xcode 8.1创build的演示项目的链接,并显示此问题: – https://www.dropbox.com/s/xwyzhshktb2hqe7/demo2.zip?dl=0

由于Xcode自动子类生成function,问题正在发生。

根据核心数据新增内容

Xcode自动子类生成

Xcode现在支持在build模工具中自动生成NSManagedObject子类。 在实体检查员:

  • 手动/无是默认的,以前的行为; 在这种情况下,您应该实现自己的子类或使用NSManagedObject。
  • Category / Extension在一个名为ClassName + CoreDataGeneratedProperties的文件中生成一个类扩展。 您需要声明/实现主类(如果在Obj-C中,通过扩展名可以导入的名称为ClassName.h)。
  • 类定义生成名为ClassName + CoreDataClass的子类文件以及为Category / Extension生成的文件。

生成的文件放置在DerivedData中,并在保存模型后在第一个版本上重新生成。 他们也被Xcode索引,所以命令点击引用和快速打开文件名工程。

因此,为了解决您的问题,您需要将Codegen字段值设置为Manual/None ,如下所示: 核心数据Codegen

这是我所做的解决这个问题,

  1. 在数据模型中select您的实体
  2. 模块设置为当前产品模块
  3. Codegen保留为类定义,Manual / None也可以
  4. select编辑器>创buildNSManagedObject子类

可以帮助别人,去项目编译源删除额外的参考,如果有的话。

该问题是由于我的项目中名为“Extensions.swift”的第二个文件。

删除重复的“Extensions.swift”后,错误得到解决。 你的错误信息可能会告诉你哪个文件是重复的。

在我的情况下,数据模型(例如:MyCoreData.xcdatamodeld)在编辑器 – >创buildNSManagedObject子类下列出了两次这就是为什么它得到这种types的错误。

我做了什么:

  1. 我没有删除MyCoreData.xcdatamodeld文件。
  2. 创build另一个数据模型,例如MyCD.xcdatamodeld。
  3. 在这里检查是重复的数据模型在这里: 编辑器 – >创buildNSManagedObject的子类…
  4. 干净,后来build造两次。