初めに
ErrorType
が追加され使用頻度が減ったとはいえ、iOSアプリ開発ではやはり必須なNSError
。
自前のエラーを定義したい場合に、毎回domainやらcodeやらを指定してinitするのはめんどくさい。
というわけで、rawValue が Int
なenumを使うと楽にNSError
が作成できる。
コード
Enumの定義
let ErrorDomain = "com.hoge.hoge"
enum MyError: Int {
case Hoge = 0
case Fuga = 1
func createError(userInfo: [String : AnyObject]? = nil) -> NSError {
return NSError(domain: ErrorDomain, code: self.rawValue, userInfo: userInfo)
}
}
使うときはこんな感じ
let error = MyError.Hoge.createError()
let errorWithUserInfo = MyError.Hoge.createError(["hoge" : "fuga"])
print(errorWithUserInfo) // Error Domain=com.hoge.hoge Code=0 "(null)" UserInfo={hoge=fuga}
終わりに
この方がいいんじゃね? 的なものがあったらご教示ください。