NSManagedObject子类中的重复符号错误

时间:2016-11-29 13:26:34

标签: ios objective-c swift core-data nsmanagedobject

我只是用Core Data创建了一个演示项目。

我在数据模型中创建了一个实体Userinfo。现在我创建了这个实体的NSManagedObject子类。

Xcode自动生成这4个类。

enter image description here

现在,当我构建项目时,它会抛出此错误:

enter image description here

我已经做了我所知道的一切,以消除重复的错误,但没有任何帮助。

我认为这是一个Xcode错误。请帮忙。

1 个答案:

答案 0 :(得分:13)

您正在生成已由Xcode为您生成的文件,从而获得重复声明。有关此功能的详细信息(Xcode 8中的新功能)可以在this WWDC video中找到。

两种可能的修复方法:

1)使用Xcode生成的ManagedObject子类(推荐的现代方法)

  • 从项目中删除所有生成的NSManagedObject子类(如果存在)。
  • Codegen中为所有实体
  • 设置Class Definition.xcdatamodel
  • 确保Module为空(浅灰色的“全局命名空间”)(解决Apple漏洞,请参阅this answer

注意:

永远不要将自动生成的文件添加到项目中。即使您没有在项目中看到生成的文件,Xcode也会引用它,因此您可以编写扩展等。例如:

extension MyEntity {
    func doSomething() {
        //
    }
}

此外,您可以在Xcode中命令+单击生成的文件。

2)手动触发子类生成(一种相当偏执但经过子弹验证的方法,忽略了新的Xcode功能)

  • 从项目中删除所有生成的NSManagedObject子类(如果存在)。
  • Codegen中为所有实体
  • 设置Manual/None.xcdatamodel
  • 清理项目
  • Clean DerivedData folder
  • 重启Xcode
  • 手动生成NSManagedObject子类(在“编辑器”菜单中)
  • 确保将这些文件添加到您的项目中
  • 构建