AFNetworking 5-NetworkReachabilityManager侦听器

问题描述 投票:0回答:2

我最近从AFNetworking 4升级到5。

这是初始化侦听器的旧方法:

let net = NetworkReachabilityManager()

net?.listener = { status in
if net?.isReachable ?? false {

switch status {

    case .reachable(.ethernetOrWiFi):
        print("The network is reachable over the WiFi connection")

    case .reachable(.wwan):
        print("The network is reachable over the WWAN connection")

    case .notReachable:
        print("The network is not reachable")

    case .unknown :
        print("It is unknown whether the network is reachable")

    }
}

net?.startListening()

新文档阅读:

@discardableResult
open func startListening(onQueue queue: DispatchQueue = .main,
                         onUpdatePerforming listener: @escaping Listener) -> Bool

https://alamofire.github.io/Alamofire/Classes/NetworkReachabilityManager.html

在我的代码中,我正在尝试:

let listener = NetworkReachabilityManager.Listener()

self.reachabilityManager?.startListening(onUpdatePerforming: listener){


}

我遇到的编译错误是Extra argument 'onUpdatePerforming' in call。这是一个语法问题,我正在从Objective C过渡到Swift。

我尝试传递闭包的方法,但似乎也无法正确获得语法:

   self.reachabilityManager?.startListening(onUpdatePerforming: { (NetworkReachabilityManager.Listener) in


    })
swift alamofire
2个回答
1
投票

Listener只是预期的闭包类型的typealias,因此您需要传递闭包。

self.reachabilityManager?.startListening { status in
    switch status {
    ...
    }
}

0
投票

这里是在AFNetworking更新后运行的代码:

    self.reachabilityManager?.startListening(onUpdatePerforming: {networkStatusListener in

        print("Network Status Changed:", networkStatusListener)

           switch networkStatusListener {
           case .notReachable:
               self.presentAlert(message: "The network is not reachable. Please reconnect to continue using the app.")
                       print("The network is not reachable.")
               case .unknown :
                       self.presentAlert(message: "It is unknown whether the network is reachable. Please reconnect.")
                       print("It is unknown whether the network is reachable.")
               case .reachable(.ethernetOrWiFi):
                       print("The network is reachable over the WiFi connection")

               case .reachable(.cellular):
                       print("The network is reachable over the WWAN connection")
        }

    })
© www.soinside.com 2019 - 2024. All rights reserved.