核心数据类的重新声明无效

问题描述 投票:34回答:2

我正在使用名为“RoleName”的实体上的Core Data。

问题是:我在我的模型中单击“Create NSManagedObject subclass”,因此它会自动为我的实体创建类。

但是,在类的声明中,我收到此错误:

无效的“RoleName”重新声明

即使我没有任何其他同名的班级。

ios swift core-data nsmanagedobject
2个回答
126
投票

这是因为Xcode自己处理所有这些。我觉得这有点麻烦,因为自动生成的类没有我的所有属性。

因此,请按照以下步骤获取以下内容:

  • 删除您已经为核心数据创建的类。
  • 将class.Module设置为Current Product模块enter image description here
  • 将Class.codegen设置为Manual / None

enter image description here

  • 现在选择您的实体并创建NSmanagedobject子类enter image description here
  • 你们都准备好了

14
投票

来自Apple:Whats new in Core Data

Xcode自动子类生成

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

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

生成的文件放在DerivedData中,并在保存模型后在第一个版本上重建。它们也被Xcode索引,因此命令单击引用并按文件名快速打开。

您无需为NSManagedObjects手动创建子类。

我建议您删除使用NSManagedObjects创建的文件(将它们移动到废纸篓)并转到Codegen选择下的DataModel检查器中的每个实体:Manual / None并创建比子类。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.