我从项目中删除了一些核心数据生成文件,但 Xcode 仍然尝试编译它们

Posted

技术标签:

【中文标题】我从项目中删除了一些核心数据生成文件,但 Xcode 仍然尝试编译它们【英文标题】:I deleted some core data generated files from the project, but Xcode still tries to compile them 【发布时间】:2016-09-23 04:31:34 【问题描述】:

我删除了 Core Data 从数据模型生成的 Objective-C 文件,所以我可以回到我在 Xcode 7 中生成的 swift 文件。删除文件时,我将文件移到了垃圾箱,并将 swift 文件添加回项目中。我正在使用 Xcode 8.0。

我得到的错误是

“错误:没有这样的文件或目录”,对于丢失的文件,其中之一 这是 Luna.build/DerivedSources/CoreDataGenerated/Luna/.LunaObservation+CoreDataClass.m。 有相应的错误 LunaObservation+CoreDataProperties.m 和 LunaOrbit+CoreDataClass.m, 但不是 LunaOrbit+CoreDataProperties.m。

我在构建阶段的编译源中没有看到文件名。我尝试清理项目并删除派生数据但没有成功。

更新:我终于弄清楚了如何生成 Swift 文件而不是 Objective-C 文件,但我仍然收到它正在寻找已删除的 Objective-C 文件的错误。

更新#2:清理项目并删除整个派生数据文件后,我能够减少错误数量;我不再收到丢失的 .m 和 .h 文件的错误,但我确实收到了一个关于两个丢失文件的错误:.Orbit+CoreDataProperties.swift 和 .Observation+CoreDataProperties.swift。这些文件存在,但名称前面没有句点。尝试将句点添加到文件名会导致“重命名失败”消息。这两个文件在其他没有导入任何内容的文件之后都有一个额外的“导入”——该行刚刚结束。

XCode 8 generates broken NSManagedObject subclasses for ios 10 的帖子几乎显示了我遇到的问题。

【问题讨论】:

【参考方案1】:

在数据模型检查器中,尝试将模块选项设置为“当前产品模块”(而不是全局命名空间)。这会将句点添加到生成的 NSManagedObject 子类名称中。

您可以通过查看配置部分来查看此操作的结果。类名将以句点为前缀。

可以在此处找到更详细的回复:https://***.com/a/40647786/4748172

【讨论】:

以上是关于我从项目中删除了一些核心数据生成文件,但 Xcode 仍然尝试编译它们的主要内容,如果未能解决你的问题,请参考以下文章

核心数据访问器 - 删除前

在 appstore 上交付应用程序:卡在验证步骤

当我从单独的视图控制器中删除核心数据实体时,为啥会调用 UITableView 方法?

如何在 xcode 4.5 中选择数据源和委托?

Restkit 从核心数据中删除项目

Maven:如何在项目生成后从原型中删除一些文件?