Xcode正在寻找带有点的核心数据实体名称; 没有编译

Mar*_*ius 6 xcode core-data ios xcode8

我已经在一个项目上工作了一段时间,最近升级到Xcode 8和Swift 3.0和iOS 10.但是因为我这样做了,所以我无法编译.

我的每个实体都收到错误:: 0:错误:没有这样的文件或目录:''/ Users/mark/Library /Developer/Xcode/DelivedData /.../.Account+CoreDataProperties.swift'每个案例有个 .实体名称前面的(点)前缀:.Account + CoreDataProperties.swift.

我将Code Gen从"Category/Extension"更改为Manual/None,我做了一个干净整洁的目录,删除了DerivedData目录.有趣的是,当我查看相应的目录时,那里有一个实际的文件,只是没有点前缀.

这非常令人困惑.有人能解释一下吗?我需要解决这个问题才能继续核心数据.

TIA马克

sha*_*ght 9

点文件由Xcode8生成.见WWDC2016.由于另一个问题,我不得不删除派生数据后遇到了同样的问题.

两个可能的修复:

1)推荐的现代方法

  • 从项目中删除所有生成的NSManagedObject子类(如果存在).
  • 设置CodegenClass Definition.xcdatamodel的所有实体
  • 确保Module为空(浅灰色的"全局命名空间")(解决Apple漏洞,请参阅@Chris Hansons的回答)

注意:即使您没有在项目中看到生成的文件,Xcode也会引用它,因此您可以编写扩展等.例如:

extension MyEntity {
    func doSomething() {
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,您可以在Xcode中命令+单击生成的文件.

2)一种相当偏执但经过子弹证明的方法,忽略了新的Xcode功能

  • 从项目中删除所有生成的NSManagedObject子类(如果存在).
  • 设置CodegenManual/None.xcdatamodel的所有实体
  • 清洁项目
  • 清理DerivedData文件夹
  • 重启Xcode
  • 手动生成NSManagedObject子类(在"编辑器"菜单中)
  • 确保将这些文件添加到项目中
  • 建立

如果问题仍然存在,请重复: