自动代码中的无效重新声明生成NSManagedObject子类Swift 3

Sum*_* Ji 52 core-data nsmanagedobject ios ios8.1 swift3

使用Xcode版本8.1.

在.xcdatamodeld文件中创建名为"MapRegionObject"的实体.在此输入图像描述

使用自动代码生成器,单击导航栏上的编辑器 - >创建NSManagedOject子类...

有两个文件:MapRegionObject + CoreDataClass.swift和MapRegionObject + CoreDataProperties

屏幕截图中显示的两个文件中的错误:MapRegionObject + CoreDataClass.swift 在此输入图像描述

MapRegionObject + CoreDataProperties 在此输入图像描述

请帮我解决这个问题,非常感谢你!

小智 123

在Xcode 8.1中,在使用自动代码生成器之前,必须在数据模型中选择实体:

实体

然后转到数据模型检查器选项卡:

数据模型检查员

在"Codegen"下选择"Manual/Node"

之后,您可以创建一个NSManagedObject没有错误的子类.


或者,如果您已经使用了"类定义",则可以进入现有的.xcdatamodeld文件,并将所有当前实体设置为Codegen下的"Manual/None".确保保存项目(文件 - >保存),删除现有的派生数据,清理项目,然后构建.为我解决了这个问题而不必重新制作我的整个模型.

  • 或者,如果您已经使用了"类定义",则可以进入现有的.xcdatamodeld文件,并将所有当前实体设置为Codegen下的"Manual/None".确保保存项目(文件 - >保存),删除现有的派生数据,清理项目,然后构建.为我解决了这个问题而不必重新制作我的整个模型. (13认同)
  • 如果您已经在"Codegen"下选择了"类定义"并创建了类,并且出现此错误,请首先删除.xcdatamodeld文件并再次创建.然后在'Codegen'下设置'手动/无'并使用自动代码生成器. (5认同)

P. *_*Ent 19

我发现整件事情非常令人困惑.您确实需要了解CoreData中的新功能.基本上,默认是在名为"DerivedData"的地方为你自动生成类和扩展,这个地方隐藏在〜/ Library/Developer/Xcode/DerivedData中,这些类及其扩展存在于代码源之外.就个人而言,无法打开并看到它们对我来说很奇怪,但有些东西可以用来使用它.

基本上,如果您的CoreData模型中有一个名为"AppSettings"的实体,您只需使用它而无需自己生成代码.如果需要项目中的代码,请将实体上的Codegen属性设置为Manual/None.然后执行您之前执行的操作:编辑器 - >创建NSManagedObject类等.文件将在您的项目中结束.

好消息是,如果要进行自定义扩展,只需在项目中执行此操作即可.Xcode会将生成的文件从项目目录外的其他位置与项目目录中的文件混合在一起.


And*_*rey 7

1)清理项目(cmd + shift + K)

2)在"数据模型检查器"中为每个创建的实体设置Class的属性,如下面的屏幕截图所示

截图

3)再次生成代码(编辑器 - >创建NSManagedObject子类)

之后一切都应该工作正常.