Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS 13中检查网络何时不可用?_Ios_Swift_Nsurlsession - Fatal编程技术网

如何在iOS 13中检查网络何时不可用?

如何在iOS 13中检查网络何时不可用?,ios,swift,nsurlsession,Ios,Swift,Nsurlsession,我添加了一些逻辑来处理网络不可用的情况,但我很难触发错误处理程序。我正在使用URLError NetworkUnavailable原因是否正确 DataService.shared.GetMyData(completion: {(result) in DispatchQueue.main.async { switch result { case .success(let data): break

我添加了一些逻辑来处理网络不可用的情况,但我很难触发错误处理程序。我正在使用URLError NetworkUnavailable原因是否正确

DataService.shared.GetMyData(completion: {(result) in
    DispatchQueue.main.async {
        switch result {
            case .success(let data):


                break
            case .failure(let error):
                print(error)
                if let error = error as? URLError, error.networkUnavailableReason == .constrained  {

                    self.showAlert()
                }

                break;
        }
    }
})
您可以使用网络监视器来检查网络是否可用。我使用了这样一个,通过为它创建一个结构:

// make sure to import Network in your file when you do this
struct NetworkMonitor {
    static let monitor = NWPathMonitor()
    static var connection = true
}
然后像这样使用它,无论您想在哪里开始监控:

NetworkMonitor.monitor.pathUpdateHandler = { path in
               if path.status == .satisfied {
                    print("connection successful")
                    NetworkMonitor.connection = true
                    // then respond to successful connection here, I used a notification and this connection bool
              } else {
                    print("no connection")
                    NetworkMonitor.connection = false
                    // respond to lack of connection here
               }
          }

          let queue = DispatchQueue(label: "Monitor")
          NetworkMonitor.monitor.start(queue: queue)

为什么要特别针对不可用的网络?如果服务器超时,则也会出现故障,但在这种情况下,网络可用。我建议以同样的方式处理所有错误/故障。我认为如果网络不可用,您将不会有故障响应。你应该在开始服务器前检查它,我怎么做?苹果特别建议不要在网络运行之前进行飞行前检查;网络连接不稳定。仅仅因为它现在可用,并不意味着它将在一毫秒内完成。请尝试该操作并处理任何错误。@Paulw11您可以发送一篇关于主题的文章或博客文章吗