AFNetworking 5 - слушатель NetworkReachabilityManager - PullRequest
0 голосов
/ 04 октября 2019

Я недавно обновил 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


    })

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Listener - это просто typealias для ожидаемого типа закрытия, поэтому вам нужно пройти закрытие.

self.reachabilityManager?.startListening { status in
    switch status {
    ...
    }
}
0 голосов
/ 07 октября 2019

Вот код, который запускается после обновления 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")
        }

    })
...