Swiftui 使用NWPathMonitor的ObservieObject

Swiftui 使用NWPathMonitor的ObservieObject,swiftui,observableobject,Swiftui,Observableobject,我试图使NWPathMonitor成为一个可观察的对象,如果存在网络连接,它将返回true,如果没有,则返回false 你能帮我吗,因为我的解决方案不起作用 谢谢 import Foundation import Network class TestNetStatus: ObservableObject { let monitor = NWPathMonitor() let queue = DispatchQueue.global(qos: .background)

我试图使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
    }
}


必须在主线程上设置已发布的变量

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())
    }
}

必须在主线程上设置已发布的变量

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())
    }
}