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

4

我最近升级到Xcode 8并进行了自动的Swift 3转换。然后我了解到了新的Core Data自动生成子类。我已经定义了类,但想要切换,所以我删除了所有定义的类,然后将所有实体定义的Codegen下拉菜单切换为Class Definition,但我的项目无法构建。我认为这是因为它还没有生成类,但我不确定。这是我得到的错误:

<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:这些类确实存在于目录中,但它们不是以“.”开头的,有任何想法为什么会发生这种情况或者这是否是一个bug?
编辑3:好吧,我有点儿假定这是他们需要修复的bug,决定再次手动创建,这也是一个问题:XCode 8 generates broken NSManagedObject subclasses for iOS 10 除此之外,我打算等待一个月左右的更新,然后继续我的个人开发。这真的很令人沮丧。。 :(

你还在使用 Xcode 8 beta 吗?我曾经遇到过这个问题,但是在发布的 Xcode 8 版本中并没有出现。 - Tom Harrington
好问题,我不太确定。我会检查一下。如果没有使用最新的操作系统,可能会有错误吗?我想我只是下载了Xcode更新,而不是操作系统更新。 - tpoppen
看起来我已经安装了最新的Xcode更新,而不仅仅是beta版。我将尝试升级我的操作系统,看看是否有任何变化。 - tpoppen
也回归手动创建。这个解决方案对我很有用,可以消除错误:stackoverflow.com/a/39711559/2829102,尽管使用当前产品模块而不是全局命名空间。 - Rygen
3个回答

1

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


1

请确保Codegen选项已设置为“类定义”,有时更改后不会保存,并会返回“手动/无”。这真的很麻烦。

清理您的构建文件夹。

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


我已经多次尝试了所有方法,但仍然没有成功。仍然不知道问题出在哪里。 - tpoppen

0

我还没有尝试过自动转换为Swift 3,但通常你可以自动生成这些类型的文件。进入你的模型,点击菜单栏中的“编辑器”,选择“创建NSManages子类”。它应该会重新生成每个类,也许有所帮助。


这是手动添加子类的方法,但据我所知,它应该自动创建子类而不会在您的Xcode项目视图中显示。在尝试这个之前,我已经用那种方式做过了,它也很好用,但是我尝试了新文档中提到的新方法。非常感谢你的努力。 - tpoppen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接