Swift URLRequest のタイムアウトを発生させる
URLRequest のリクエストがタイムアウトになった時の動作をみたい時がある。
そういう時は URLRequest の initializer で timeoutinterval をとても小さな値(たとえば 0.0001 秒とか)にすると、タイムアウトを発生させて、動作を試すことができる。
こんな感じだ。
let url = URL(string: "URL")! let req = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 0.0001) // すぐタイムアウト発生する let task = URLSession.shared.dataTask(with: req) { data, response, error in if let err = error as NSError? { if err.domain == NSURLErrorDomain, err.code == NSURLErrorTimedOut { // タイムアウト発生 } return } } task.resume()