2016-05-12 8 views
0

Ich versuche ein Grundversprechen mit PromiseKit zu bekommen. Jedoch der folgende Code wird nicht kompilieren:PromiseKit Segmentierungsfehler: 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)") 
     } 
    } 
} 

Dies ist der Fehler, den ich bekommen:

command failed due to signal: segmentation fault: 11 

Das ist ziemlich frustrierend. Ist jemand diesem begegnet?

+0

Kommt der Fehler vom Swift-Compiler oder vom Programm, wenn Sie ihn ausführen? – kennytm

+0

Es stammt aus dem Swift-Compiler, wenn ich versuche, @kennytm zu erstellen – bunana

+0

Wenn Sie in Xcode auf den Report-Navigator gehen (drücken Sie ⌘8, oder klicken Sie auf das linke Feld), sollten Sie in der Lage sein, das Kompilierungsprotokoll zu finden welche Zeile verursacht den Absturz des Compilers. – kennytm

Antwort

1

Dies liegt daran, Int ist nicht AnyObject

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

Dies wird höchstwahrscheinlich in Swift 3 fixiert, aber eine dieser behebt die Kompilierung:

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

Oder:

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