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

AsTeR picture AsTeR · Dec 12, 2014 · Viewed 11.3k times · Source

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

Answer

rintaro picture rintaro · Dec 12, 2014

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)