我最近想尝试使用CoreData及其功能,所以我找到了一个简单的教程,在关注它的同时,我创建了一个包含实体和关系的.xcdatamodeld文件。
我现在想做的是把它变成(试过Xcode版本8.1(8B62)和Xcode版本8.2 beta(8C23))
为此,我打开了我的模型文件,点击编辑 - > 创建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中工作?然后我转到那个......
答案 0 :(得分:3)
Xcode 8增加了对自动Core Data子类生成的支持,您可以在文档What's New in Core Data in macOS 10.12, iOS 10.0, tvOS 10.0, and watchOS 3.0中阅读。新项目已启用自动代码生成,因此当您手动创建NSManagedObject子类时,您创建了重复项,这会导致编译器错误。
有两种方法可以解决这个问题。首先,您可以删除手动创建的NSManagedObject子类。其次,您可以通过从Codegen菜单中选择Manual / None,从Data Model检查器关闭数据模型的自动代码生成。如果您正在学习本教程,我建议使用第二个选项,因为该教程很可能是在Apple添加自动核心数据子类生成之前编写的。
您可以在以下文章中了解有关Core Data代码生成的更多信息: