LoginSignup
12
12

More than 5 years have passed since last update.

RxSwiftでネットワークエラーを判定する方法

Posted at

RxSwiftを使っていて、ネットワークエラーをどうやって捕まえればいいのかに少し迷ったのでメモ。

こんなかんじのコードを書いていたとします。


.subscribe { (event: Event<JSON>) -> Void in
  switch event {
  case .Next(let element):
    print(".Next")
  case .Completed:
    print(".Completed")
  case .Error(let error):
    print(".Error")
  }
}

この時ネットワークに繋がらない状態だった場合、当然.Errorのところに入ってきます。

しかし、このままではサーバから返された404, 500などのエラーなのか、ネットワークエラーなのかを判別することはできません。
ネットワークエラーであることを判別したい場合はcase .Errorの中で下記if文を書けばOKです。

if let error = event.error {
  if (error._domain == NSURLErrorDomain) {
    print("NetWorkError!")
  }
}
12
12
2

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
12
12