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

11.8k views Asked by At

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".

1

There are 1 answers

1
rintaro On BEST ANSWER

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)