I am trying to create an error object to display to the user.
let userInfo: [NSObject : AnyObject] =
[
"NSLocalizedDescriptionKey" : NSLocalizedString("Unauthorized", comment: ""),
"NSLocalizedFailureReasonErrorKey" : NSLocalizedString("Unauthorized", comment: "")
]
let err = NSError(domain: "ShiploopHttpResponseErrorDomain", code: httpResponse.statusCode, userInfo: userInfo)
print("Error in Post: \(err.localizedDescription)")
Unfortunately the output is:
Error in Post: The operation couldn’t be completed.(ShiploopHttpResponseErrorDomain error 401.)
I want to be able to show to the user that he should activate his account. Any ideas??
Looks like you want (see dictionary keys):
Swift 2
let userInfo: [NSObject : AnyObject] =
[
NSLocalizedDescriptionKey : NSLocalizedString("Unauthorized", value: "Please activate your account", comment: ""),
NSLocalizedFailureReasonErrorKey : NSLocalizedString("Unauthorized", value: "Account not activated", comment: "")
]
Swift 3
let userInfo: [AnyHashable : Any] =
[
NSLocalizedDescriptionKey : NSLocalizedString("Unauthorized", value: "Please activate your account", comment: "") ,
NSLocalizedFailureReasonErrorKey : NSLocalizedString("Unauthorized", value: "Account not activated", comment: "")
]
Then create the error object in both swift 2 or 3 like this:
let err = NSError(domain: "ShiploopHttpResponseErrorDomain", code: 401, userInfo: userInfo)
println("Error in Post: \(err.localizedDescription)")
NSLocalizedDescriptionKey and NSLocalizedFailureReasonErrorKey are global String variables, and the keys inside of the userInfo dictionary. The values are slightly different from what you specified:
println(NSLocalizedDescriptionKey) //prints "NSLocalizedDescription"
println(NSLocalizedFailureReasonErrorKey) //prints "NSLocalizedFailureReason"
I find it good practice to look at the documentation by right-clicking the class (NSError in this case) and selecting "Jump To Definition" within xcode. All kinds of questions can be answered this way. :)