核心数据子类不会自动生成

Posted

技术标签:

【中文标题】核心数据子类不会自动生成【英文标题】:Core Data Subclasses won't auto generate 【发布时间】:2016-10-08 23:01:01 【问题描述】:

我最近更新到 Xcode 8 并进行了 auto swift 3 转换。然后我阅读了新的 Core Data 自动生成的子类。我已经定义了类但想切换,所以我删除了所有定义的类,然后将所有实体定义的 Codegen 下拉切换到类定义,我的项目将无法构建。我相信这是因为它没有生成类,但我不确定。这是我得到的错误:

<unknown>:0: error: no such file or directory: '*my file path to the iphonesimulator/Debug-iphonesimulator/LoRezDungeon.build/DerivedSources/CoreDataGenerated/GameDataModel/.UAWeapon+CoreDataProperties.swift'
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

这只是最后一个实体错误,我的 xcdatamodel 文件中的所有实体都抛出错误,命令部分仅在错误日志末尾显示一次。

我说我假设它只是没有生成文件,因为它说没有像自动生成的类那样的文件。

如何强制它们生成或如何解决此问题?我尝试了其他人所说的并进行了实体更改,保存了。更改实体名称更改并保存。清理并重建。同样的事情一直在发生,我被困住了。在此先感谢您的帮助。

编辑:我检查了它正在谈论的目录,那里有生成的文件,所以我知道为什么它没有构建..

编辑 2:目录中确实存在这些类,但它们不以 . 开头,知道为什么会发生这种情况或者这是一个错误吗?

编辑 3:好吧,我只是假设这是他们需要修复的错误,决定再次进行手动创建,这也是一件事:XCode 8 generates broken NSManagedObject subclasses for ios 10

除此之外,我将等待一个月的更新,然后再继续我的个人发展。这只是令人沮丧.. :(

【问题讨论】:

您还在使用 Xcode 8 测试版吗?我曾经遇到过这个问题,但在 Xcode 8 的发布版本中没有。 好问题,我不确定。我会检查。如果不在最新的操作系统上也可能存在错误吗?我想我只是下载了 xcode 更新而不是操作系统更新。 看起来我确实有最新的 Xcode 更新,而不仅仅是测试版。我将尝试更新我的操作系统,看看是否有任何结果.. 也恢复为手动创建。这个解决方案帮助我摆脱了错误:***.com/a/39711559/2829102,虽然使用的是当前产品模块而不是全局命名空间。 【参考方案1】:

仔细检查 Codegen 选项是否设置为“类定义”,有时当您更改它时它不会保存并且会返回到“手动/无”。这是一个真正的痛苦。

清理你的构建文件夹。

将您的#import 语句更改为“MyClass+CoreDataClass.swift”

【讨论】:

我都做了好几次,仍然没有运气。不知道问题仍然存在。【参考方案2】:

该实体的“模块”组合框设置为“当前产品模块”,删除组合框的内容,使其恢复为默认的“全局命名空间”。

【讨论】:

【参考方案3】:

我没有尝试过自动 Swift 3 转换,但通常你可以自动生成这些文件。继续您的模型,单击菜单栏中的编辑器并选择“创建 NSManages 子类”。它应该再次生成每个类,也许有帮助。

【讨论】:

这是添加子类的手动方式,但据我了解,它应该自动创建它们,而不会出现在您的 xcode 项目视图中。在尝试这个之前,我已经这样做了,它工作得很好,但尝试了新文档中提到的新事物。感谢您的努力。

以上是关于核心数据子类不会自动生成的主要内容,如果未能解决你的问题,请参考以下文章

子类 NSWindowController 核心数据

修改核心数据模型后重新创建类定义的更好方法?

以核心数据实体作为属性的子类 UITextField

核心数据。如何使用在 NSManagedObject 子类中创建的方法

在 Xcode 6 中从核心数据数据模型创建 NSManagedObject 子类

在 xcode 4 中为核心数据属性生成代码