Core data Swift CoreData NSManagedObject子类

Core data Swift CoreData NSManagedObject子类,core-data,xcode8,Core Data,Xcode8,我最近想试用CoreData及其强大功能,所以我找到了一个简单的教程,在遵循它的同时,我创建了一个包含实体和关系的.xcdatamodeld文件 我现在想做的是将它转换成类(在Xcode版本8.1(8B62)和Xcode版本8.2 beta(8C23)上试用过) 为此,我打开了模型文件,单击编辑器-->创建NSManagedObject子类。 这样做并选择我的两个实体将生成4个类、两个NSManagedObject类和每个类一个扩展 在添加或更确切地说生成这四个文件后,Xcode将不会编译项目,

我最近想试用CoreData及其强大功能,所以我找到了一个简单的教程,在遵循它的同时,我创建了一个包含实体和关系的.xcdatamodeld文件

我现在想做的是将它转换成类(在Xcode版本8.1(8B62)和Xcode版本8.2 beta(8C23)上试用过)

为此,我打开了模型文件,单击编辑器-->创建NSManagedObject子类。 这样做并选择我的两个实体将生成4个类、两个NSManagedObject类和每个类一个扩展

在添加或更确切地说生成这四个文件后,Xcode将不会编译项目,并发出以下错误:

Command/Applications/Xcode.app/Contents/Developer/Toolchains/xcodefault.xctoolchain/usr/bin/swiftc失败,退出代码为1

有时它还会说:
对[Managed Object Name]的重新声明无效。


任何洞察都会很棒,我应该自己创建类而不使用模型吗?还是CoreData在Objc中工作?然后我将切换到…

Xcode 8添加了对自动核心数据子类生成的支持,您可以在文档中阅读。新项目已启用自动代码生成功能,因此当您手动创建NSManagedObject子类时,会创建重复的代码,这会导致编译器错误

有两种方法可以解决这个问题。首先,可以删除手动创建的NSManagedObject子类。其次,通过从Codegen菜单中选择Manual/None,可以从数据模型检查器中关闭数据模型的自动代码生成。如果您正在学习教程,我推荐第二个选项,因为该教程很可能是在Apple添加自动核心数据子类生成之前编写的

您可以在以下文章中了解有关核心数据代码生成的更多信息:


Xcode 8增加了对自动核心数据子类生成的支持,您可以在文档中阅读。新项目已启用自动代码生成功能,因此当您手动创建NSManagedObject子类时,会创建重复的代码,这会导致编译器错误

有两种方法可以解决这个问题。首先,可以删除手动创建的NSManagedObject子类。其次,通过从Codegen菜单中选择Manual/None,可以从数据模型检查器中关闭数据模型的自动代码生成。如果您正在学习教程,我推荐第二个选项,因为该教程很可能是在Apple添加自动核心数据子类生成之前编写的

您可以在以下文章中了解有关核心数据代码生成的更多信息:


哦,那么Xcode会根据您在模型中定义的内容自动创建隐藏的Swift类吗?所以我仍然可以在代码中使用它们,但它们没有显示给我?我对你的问题的最好猜测是肯定的,但我没有使用自动子类生成。正如我在回答的最后所说,如果你在学习教程,你应该关闭自动子类生成。哦,那么Xcode会根据你在模型中定义的自动创建隐藏的Swift类吗?所以我仍然可以在代码中使用它们,但它们没有显示给我?我对你的问题的最好猜测是肯定的,但我没有使用自动子类生成。正如我在回答的最后所说,如果您正在学习教程,那么应该关闭自动子类生成。