2016-04-17 8 views
1

enumを使用してアプリケーションにカスタムエラーコードを設定しようとしています。しかし、NSErrorイニシャライザを呼び出したときにエラーが発生します。以下は、私がこれまで持っているコードは、あるコンパイラエラーがあなたがとは対照的に、FYIErrorタイプに渡そうとしているとおりNSError initializerでコードの列挙型を渡すときにエラーが発生する

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

答えて

3

Int

let customError:NSError = NSError(domain: "mydomain", code: FYIError.apiError.rawValue, userInfo: Test.userInfo("")) 

コード:あなたが列挙型のrawValueを使用する必要があるため

let customError:NSError = NSError(domain: "mydomain", code: FYIError.apiError.rawValue, userInfo: Test.userInfo("")) 
2

あなたはこれを取得している。単にそうrawValueプロパティを使用しますが、その列挙型ケースに割り当てられた生の値を取得するには指定された列挙型を使用すると、enum型のメンバーが取得されます。指定された列挙型の場合、rawValueはInt値を取得します

関連する問題