我正在尝试使用枚举为我的应用设置一些自定义错误代码。但是当我调用NSError初始化程序时出现错误。下面是我到目前为止的代码,
enum FYIError : Int{
case emptyData = 1
case apiError = 2
}
class Test{
func customErrorTest (){
let customError:NSError = NSError(domain: "mydomain", code: FYIError.apiError, userInfo: Test.userInfo(""))
}
static private func userInfo (message:String) -> [NSObject: AnyObject]{
var msg:String = message
if (msg.characters.count<0){
msg = "Oops! Something went wrong. Please try again later."
}
var dict = [NSObject: AnyObject]()
dict[NSLocalizedDescriptionKey] = msg
dict[NSLocalizedFailureReasonErrorKey] = msg
dict[NSUnderlyingErrorKey] = msg
return dict
}
}
我得到的错误如下,
答案 0 :(得分:3)
由于编译器错误表明您尝试传入FYIError
类型而不是Int
。要获取分配给该枚举的原始值,只需使用rawValue
属性:
let customError:NSError = NSError(domain: "mydomain", code: FYIError.apiError.rawValue, userInfo: Test.userInfo(""))
答案 1 :(得分:2)
你得到这个是因为你需要使用枚举的rawValue:
let customError:NSError = NSError(domain: "mydomain", code: FYIError.apiError.rawValue, userInfo: Test.userInfo(""))
代码需要类型Int,使用指定的枚举只会获得枚举类型的成员,如果指定的枚举
,rawValue将获取Int值