我试图使NWPathMonitor成为一个可观察的对象,如果有网络连接,返回true,如果没有网络连接,则返回false。
你能帮我吗因为我的解决方案行不通。
谢谢
import Foundation
import Network
class TestNetStatus: ObservableObject {
let monitor = NWPathMonitor()
let queue = DispatchQueue.global(qos: .background)
@Published var connected: Bool = false
private var isConnected: Bool = false
init() {
monitor.start(queue: queue)
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
self.isConnected = true
} else {
self.isConnected = false
}
}
self.connected = isConnected
}
}发布于 2020-05-06 02:39:09
必须在主线程上设置已发布的变量。
class TestNetStatus: ObservableObject {
let monitor = NWPathMonitor()
let queue = DispatchQueue.global(qos: .background)
@Published var connected: Bool = false
private var isConnected: Bool = false
init() {
monitor.start(queue: queue)
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
OperationQueue.main.addOperation {
self.isConnected = true
self.connected = self.isConnected
}
} else {
OperationQueue.main.addOperation {
self.isConnected = false
self.connected = self.isConnected
} }
}
}
}
struct ContentView: View {
@EnvironmentObject var data : TestNetStatus
var body: some View {
VStack {
Text ("Status")
Text(data.connected ? "Connected" : "not connected")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(TestNetStatus())
}
}

https://stackoverflow.com/questions/61625768
复制相似问题