4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SwiftのErrorのlocalizedDescriptionをカスタマイズする

Last updated at Posted at 2020-07-26

SwiftのError

APIなどでエラーが発生した際にどのようなエラーになっているかをハンドリングするプロトコルです。
任意のenumを作成してErrorに準拠させます。

enum SomeError: Error {
		case hoge
		case fuga
}

カスタマイズする利点

localizedDescriptionをカスタマイズすることでエラーメッセージを表示する際にわざわざエラー処理用のクラスを作る必要がなくなり、エラーをキャッチした際のダイアログの表示ロジックがシンプルになり可読性が向上します。

LocalizedErrorに準拠する

localizedDescriptionをカスタマイズするにはErrorの他にLocalizedErrorに準拠させる必要があります。

enum SomeError: Error, LocalizedError {
		case hoge
		case fuga

		var errorDescription: String? {
        switch self {
        case .hoge:
            return "hoge Error"
        case .fuga:
            return "fuga Error"
        }
    }
}

LocalisedErrorに準拠させてerrorDescriptionにエラーメッセージを返すことでlocalizedDescriptionをカスタマイズすることができます。

localizedDescriptionにメッセージを返してもlocalizedDescriptionにメッセージは渡らないので注意してください。

まとめ

localizedDescriptionをカスタマイズすることでエラーをthrowするだけでカスタマイズされたメッセージをダイアログなどに表示できてメッセージの管理クラスなどを実装しなくて住むのでコード量が減って可読性が向上するのでおすすめです。

Rxswiftでエラーが流れてきたときの処理もシンプルになるのでとても良いと感じました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?