NSManagedObject子类中的重复符号错误

iPe*_*ter 5 core-data objective-c nsmanagedobject ios swift

我只是简单地用Core Data创建了一个演示项目.

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

Xcode自动生成了这4个类.

在此输入图像描述

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

在此输入图像描述

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

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

sha*_*ght 13

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

两个可能的修复:

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

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

注意:

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

extension MyEntity {
    func doSomething() {
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 从项目中删除所有生成的NSManagedObject子类(如果存在).
  • 设置CodegenManual/None.xcdatamodel的所有实体
  • 清洁项目
  • 清理DerivedData文件夹
  • 重启Xcode
  • 手动生成NSManagedObject子类(在"编辑器"菜单中)
  • 确保将这些文件添加到项目中
  • 建立