NSManagedObject子类重复声明

时间:2016-10-30 17:47:09

标签: swift core-data swift3 xcode8 ios10

所以,当我的数据模型准备就绪时,我试图在我的数据模型文件打开时生成子类:

编辑 - >创建NSManaged Object子类

好的,生成了两个文件,一个是类声明,另一个是属性。

然而,我立刻被提示我已经重新声明了已经存在的类。这是原始生成的文件的位置: previously generated files

我的问题很明显:

  1. 这两个文件是什么时候生成的?
  2. 如果我想在项目导航器中使用这些文件,当然还有与ViewController相同的文件夹,该怎么办?

4 个答案:

答案 0 :(得分:1)

通常对核心数据模型上的现有实体进行更改。

假设您向核心数据模型中的现有实体添加字段,您必须重新生成该实体的类以包含该字段。

重新生成该类时,会有一个覆盖现有文件的选项。

回答你的问题:

  1. 可能是在进行上一次实体更改时创建的。
  2. 将以前生成的文件移动到桌面。然后生成新文件。查看两组文件之间的区别,并采取适当的措施。如果我没有错,一个文件将是一个扩展名,一个是一个类文件。

答案 1 :(得分:0)

所以,正确答案似乎是对我的问题发表评论的人。原帖如下:https://stackoverflow.com/a/39933534/5642467

从项目中删除所有生成的NSManagedObject子类(如果存在)。

在.xcdatamodel中为所有实体设置Codegento Manual / None 清理项目。 ---这是关键步骤,默认情况下由Xcode8设置为自动。

清理DerivedData文件夹

重启Xcode

手动生成NSManagedObject子类(在“编辑器”菜单中)

确保将这些文件添加到您的项目中 构建

如果问题仍然存在,请重复:

清理项目

清理DerivedData文件夹

重启Xcode

答案 2 :(得分:0)

您正在生成已由Xcode为您生成的文件,从而获得重复的声明。

this answer中查找详细信息。

答案 3 :(得分:0)

在您的xcdatamodeld中,您必须在编译之前将实体类 Codegen 修改为“实用工具”面板中的手动/无

enter image description here