2016-05-12 149 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 
    } 
}