ios - 为什么 NWPathMonitor 状态总是满足?
问题描述
当没有连接时,我从 URL 会话中收到一条错误消息,指出请求超时。
我正在使用网络协议事先检查连接性,但显然这不像我在内部调用它时那样工作viewDidLoad
:
static func startUpdateProcess() {
let monitor = NWPathMonitor()
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
print("Good! We are connected!")
Helper.createDownloadTask()
} else {
print("No connection. Local file not updated!")
}
}
let queue = DispatchQueue(label: "Monitor")
monitor.start(queue: queue)
}
...我得到“好!我们有联系!”。如果没有连接并因此触发else
语句,不应该不满足路径吗?
仅供参考,createDownloadTask()
询问 API 并下载所需数据。
你能告诉我这里有什么问题else
吗?如果路径不满意,我该怎么做才能得到声明?
谢谢!
解决方案
感谢用户 May Rest in Peace 为我指明了正确的方向。
尽管文档对网络协议保持沉默,但似乎只要设备连接到网络,该类的status
属性(NWPath
类型的枚举)就会NWPath.Status
返回.satisfied
,无论该网络是否正在工作、传输数据或不。
触发上述声明的唯一方法是else
在启动应用程序之前停用 Wi-Fi 和/或蜂窝数据或断开与任何网络的连接。
所有这些属性都列在文档中,但没有一个附有描述或讨论。 用户@twostraws 的这篇文章允许我创建该代码的第一部分。