如何解决中止陷阱:6 错误 - xcode 12

shr*_*ani 4 objective-c swift jsqmessagesviewcontroller xcode12

我们在 Xcode 12 中遇到了“中止陷阱 6”的问题。由于这个原因,应用程序无法使用 Xcode 12 运行。我们正在使用 swift 5 版本和 jsqmessageviewcontroller 目标 c 库。进入 Xcode 12 时出现以下错误。

<unknown>:0: error: fatal error encountered while reading from module 'wwww'; please file a bug report with your project and the crash log
<unknown>:0: note: module 'wwww' full misc version is '5.3.2(5.3.2)/Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28)'
top-level value not found
Cross-reference to module 'JSQMessagesViewController'
... JSQMessageMediaData
error: Abort trap: 6 (in target 'zapwww' from project 'zapwww')
Run Code Online (Sandbox Code Playgroud)

如果有人有解决方案,请帮助我们。

Mar*_*ner 9

我在 Xcode 12.5.1 中遇到了同样的错误,这似乎是一个错误,已在下一个测试版中修复。然而,似乎有几个问题可能导致此错误。所以我的解决方案可能行不通。

对我来说,这个问题非常具体,只发生在以下场景中:

  1. 调用返回可选 RealmObject 的方法(在您的情况下可能有所不同)。
  2. 返回的 RealmObject 已被分配了一个变量。
  3. 尝试使用guard let 或 if let对新的安全解包变量使用相同的名称来解包变量。

最简单的修复方法是使用不同的变量名称或直接安全地解包返回的对象而不为其分配变量。

在我的例子中导致错误的示例:

class MyClass {

    func returnObject() -> Object? {
        return nil
    }

    func anyMethod() {

        let myObject = returnObject()

        guard let myObject = myObject else { return } // <-- works anywhere else but here.

    }
}
Run Code Online (Sandbox Code Playgroud)

修复了我的情况下的错误的相同示例:

class MyClass {

    func returnObject() -> Object? {
        return nil
    }

    func anyMethod() {

        let myObject = returnObject()

        guard let myNewObject = myObject else { return } // <-- Changed name of new variable here

    }
}
Run Code Online (Sandbox Code Playgroud)

我见过人们在其他类型上遇到过这个问题,所以它不限于 RealmObject 类型。但是使用相同的变量名检查所有的guard let 或 if let 是一个好的开始。

我还看到其他人通过清理构建文件夹或删除软件包并重新安装它们来修复它。但这对我没有帮助。