最近我想试用CoreData及其强大功能,所以我找到了一个简单的教程,在遵循它的同时,我创建了一个带有实体和关系的.xcdatamodeld文件。
我现在想做的是把它变成类(在Xcode版本8.1 (8B62)和Xcode版本8.2 beta (8C23)上试用)
为此,我打开了模型文件,单击了Editor -> Create NSManagedObject子类。这样做并选择我的两个实体将生成4个类,两个NSManagedObject类,每个类都有一个扩展。
在添加或生成这四个文件之后,Xcode将不会编译该项目并产生以下错误:
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
有时它还会说:Invalid redeclaration of [Managed Object Name]
任何洞察力都会很棒,我应该自己创建类而不使用模型吗?或者CoreData在Objc中工作?那我就转到那个..。
发布于 2016-11-03 00:15:39
Xcode 8增加了对自动核心数据子类生成的支持,您可以在文档macOS 10.12、iOS 10.0、tvOS 10.0和watchOS 3.0中的核心数据中有什么新的?中看到这些支持。新项目具有自动代码生成功能,因此当您手动创建NSManagedObject子类时,您创建了重复项,这将导致编译器错误。
有两种方法可以解决这个问题。首先,可以删除手动创建的NSManagedObject子类。其次,您可以从数据模型检查器中选择Codegen菜单中的手工/None来关闭数据模型的自动代码生成。如果您正在学习教程,我建议使用第二个选项,因为教程很可能是在Apple添加自动核心数据子类生成之前编写的。

您可以在以下文章中了解有关核心数据的代码生成的更多信息:
https://stackoverflow.com/questions/40390820
复制相似问题