Search code examples
swiftpromisekit

Create a new NSError in Swift (to reject a Promise from PromiseKit)


I have been trying to use PromiseKit, and I'm stuck at rejecting a promise.

Promise rejection is done either by calling a reject function with an NSError as argument.

func getAPromise() -> Promise<Bool> {
    return Promise<Bool> { fulfiller, rejecter in
        let diceRoll = Int(arc4random_uniform(7))
        if diceRoll < 4 {
             // rejecter(?) how do I call this rejection correctly ?
        } else {
             fulfiller(true)
        }
}

Simply getting an instance of NSError would help me.

EDIT:

NSError("somedomain", 123, [])

complains with "Extra argument in call".


Solution

  • You have two problems in this code:

    NSError("somedomain", 123, [])
    
    • All initialization parameters of NSError have external name.
    • Empty Dictionary literal is [:], not []. [] is for Array

    Try:

    NSError(domain: "somedomain", code: 123, userInfo: [:])
    

    Or, if you don't have any userInfo, you might want to pass nil for it.

    NSError(domain: "somedomain", code: 123, userInfo: nil)