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!")
}
}