在 Xcode 10.2 上的 Swift4.2 中插入 NSManagedObject 后,我​​会立即收到 Xcode 构建错误

Posted

技术标签:

【中文标题】在 Xcode 10.2 上的 Swift4.2 中插入 NSManagedObject 后,我​​会立即收到 Xcode 构建错误【英文标题】:I am getting Xcode build errors as soon as I insert NSManagedObject in Swift4.2 on Xcode 10.2 【发布时间】:2019-04-24 23:07:29 【问题描述】:

每次我将 NSManagedObject 子类添加到普通应用程序(启用 CoreData)或添加到一开始未启用 CoreData 但之后添加的普通应用程序时,Xcode (10.2.1) / Swift (4.2) 都会引发 3 个错误。

我正在尝试在 Xcode v10.2(刚刚更新到 10.2.1)中创建一个使用 Core Data 的简单应用程序。我试图通过两种方法来做到这一点,即。启动一个全新的应用程序并确保核心数据被勾选,并启动一个没有核心数据勾选的普通应用程序,然后添加核心数据。我遇到的问题是在我创建实体和一些实体属性之后发生的(每次都可以正常编译),但是一旦我从编辑器下拉列表中添加 NSManagedObject 子类,就会出现问题。

一旦我添加了 NSManagedObject,Xcode 就会重新索引,我收到 3 个错误,其中两个指出“多个命令产生....”,另一个指出 Command CompileSwiftSources 失败,退出代码为非零。

我尝试重新创建 NSManagedObject,但这没有什么区别。我已按照说明添加构建语句(SWIFT_ENABLE_BATCH_MODE 设置为 NO),但这没有什么区别。

我不想在这里做任何花哨的事情,只是达到一个点,即我启用了 NSManagedObject 子类作为 CoreData 的一部分,这样我就可以在 Xcode 10.2/Swift 4.2 上继续编写我的应用程序的其余部分。

我也刚刚更新到 Xcode 10.2.1,它没有任何区别,即。当您尝试添加 NSManagedObject 子类时,问题仍然存在。

有什么想法吗?

Screen shot of compiler errors

【问题讨论】:

你没有说多个命令产生了什么,但看看这里的第二个答案是否有用:***.com/questions/50718018/… 嗨菲利普,感谢您的链接。第 3 个答案有助于如果我将编译设置为旧版,它会隐藏 2 个错误,但是,我真的不想这样做,因为它掩盖了真正的问题(在我看来,这就像 Xcode 中的一个错误)。 呜呜——我找到了答案!!!关键是在堆栈溢出中搜索“Build failed with "Command failed with a nonzero exit code"”的错误,在这些答案中,JeffreyWang23 于 2018 年 9 月 16 日发表了一篇文章来解决这个问题。我试图包含该链接,但我只是按照该建议从 Xcode 中删除 Entity+CoreDataClass.swift 和 Entity+CoreDataProperties.swift,然后在实体模型检查器的“类”下,将“模块”更改为当前产品模块和"codegen" 为 Manual/None,然后重新创建 NSManagedObject。然后所有的错误都消失了! :) :) :) 解决方案链接:***.com/a/52357296/11407686(均归功于另一篇文章的作者)。 :) 【参考方案1】:

我找到了答案!!!关键是在堆栈溢出时搜索“Build failed with "Command failed with a nonzero exit code"”的错误,在这些答案中,JeffreyWang23 于 2018 年 9 月 16 日发表了一篇文章来解决这个问题。

解决方案链接:***.com/a/52357296/11407686(所有归功于另一篇文章的作者)。

我只是按照这个建议从 Xcode 中删除 Entity+CoreDataClass.swiftEntity+CoreDataProperties.swift,然后在实体模型检查器的“类”下,将 "module" 更改为 Current Product Module"codegen"Manual/None,然后重新创建NSManagedObject

然后所有错误都消失了! :) :) :)

【讨论】:

【参考方案2】:

为解决此问题,您应该在项目导航器中选择 xcdatamodeld 文件,选择实体并按⌥⌘3(数据模型检查器)。

如果您手动创建了类,则必须将 Codegen 弹出窗口设置为 Manual/None,否则会隐式创建类文件。

参考this answer

【讨论】:

以上是关于在 Xcode 10.2 上的 Swift4.2 中插入 NSManagedObject 后,我​​会立即收到 Xcode 构建错误的主要内容,如果未能解决你的问题,请参考以下文章

转1Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结

Xcode 10.2

Swift 4.2 新特性(译)

将 xcode 升级到 10.2 版后面临 AFNetworking 错误

是否可以在 High Sierra (10.13.6) 上安装 Xcode 10.2?

从委托方法修改视图控制器属性