在 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.swift
和 Entity+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 版后面临 AFNetworking 错误