2016-05-12 118 views
0

我正在尝试使用PromiseKit获得基本承诺。然而,下面的代码不会编译:PromiseKit分段错误:11

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 

这是非常令人沮丧的。有没有人遇到过这个?

+0

错误来自Swift编译器,或者运行它时的程序? – kennytm

+0

它来自swift编译器,只要我尝试构建@kennytm – bunana

+0

如果您转到Xcode中的报告导航器(按⌘8,或单击左侧面板上),您应该能够找到编译日志并找出哪一行会导致编译器崩溃。 – kennytm

回答

1

这是因为Int不是AnyObject

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

这很可能是固定在斯威夫特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 
    } 
}