【问题标题】:PromiseKit segmentation fault: 11PromiseKit 分段错误:11
【发布时间】:2016-05-12 05:37:13
【问题描述】:

我正在尝试使用 PromiseKit 获得基本的承诺。但是下面的代码不会编译:

import Foundation
import PromiseKit

class MyClass {
    var myInt: Int?

    func sample() -> Promise<AnyObject> {
        return Promise { fulfill, reject in
            fulfill(1)
        }.then { data -> Int in
            return 3
        }
    }

    init() {
        sample().then { data -> Void in
            debugPrint("got data: \(data)")
        }
    }
}

这是我得到的错误:

command failed due to signal: segmentation fault: 11

这很令人沮丧。有人遇到过吗?

【问题讨论】:

  • 错误是来自Swift编译器,还是运行时的程序?
  • 每当我尝试构建 @kennytm 时,它都来自 swift 编译器
  • 如果你在Xcode中进入Report navigator(按⌘8,或者点击左侧面板的????),你应该可以找到编译日志并找出它在哪一行导致编译器崩溃。
  • 谢谢@kennytm。看来,如果我将这一行更改为:}.then { data -&gt; Int in.then { data -&gt; NSNumber in 那么它构建得很好

标签: xcode swift promisekit


【解决方案1】:

这是因为Int 不是AnyObject

func sample() -> Promise<AnyObject> {
    return Promise { fulfill, reject in
        fulfill(1)
    }.then { data -> Int in
        return 3
    }
}

这很可能在 Swift 3 中得到修复,但是其中任何一个都可以修复编译:

func sample() -> Promise<Int> {
    return Promise { fulfill, reject in
        fulfill(1)
    }.then { data -> Int in
        return 3
    }
}

或者:

func sample() -> Promise<AnyObject> {
    return Promise { fulfill, reject in
        fulfill(1)
    }.then { data -> NSNumber in
        return 3
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2017-01-07
    • 1970-01-01
    相关资源
    最近更新 更多