Swift CoreData NSManagedObject子类

时间:2016-11-02 22:22:35

标签: core-data xcode8

我最近想尝试使用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中工作?然后我转到那个......

1 个答案:

答案 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添加自动核心数据子类生成之前编写的。

enter image description here

您可以在以下文章中了解有关Core Data代码生成的更多信息:

Core Data Code Generation