在NSError初始化程序中传递代码的枚举时出错

时间:2016-04-17 05:33:39

标签: swift enums

我正在尝试使用枚举为我的应用设置一些自定义错误代码。但是当我调用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
}
}

我得到的错误如下,

enter image description here

2 个答案:

答案 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值