首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AFNetworking 5- NetworkReachabilityManager监听器

AFNetworking 5- NetworkReachabilityManager监听器
EN

Stack Overflow用户
提问于 2019-10-04 23:03:21
回答 2查看 2.4K关注 0票数 3

我最近从AFNetworking 4升级到了5。

这是初始化监听程序的旧方法:

代码语言:javascript
复制
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()

新文档是这样写的:

代码语言:javascript
复制
@discardableResult
open func startListening(onQueue queue: DispatchQueue = .main,
                         onUpdatePerforming listener: @escaping Listener) -> Bool

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

在我的代码中,我尝试这样做:

代码语言:javascript
复制
let listener = NetworkReachabilityManager.Listener()

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


}

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

当我试图传递一个闭包时,我似乎也不能得到正确的语法:

代码语言:javascript
复制
   self.reachabilityManager?.startListening(onUpdatePerforming: { (NetworkReachabilityManager.Listener) in


    })
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-04 23:49:08

Listener只是期望的闭包类型的typealias,所以你需要传递一个闭包。

代码语言:javascript
复制
self.reachabilityManager?.startListening { status in
    switch status {
    ...
    }
}
票数 2
EN

Stack Overflow用户

发布于 2019-10-07 09:59:59

以下是在AFNetworking更新后运行的代码:

代码语言:javascript
复制
    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")
        }

    })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58238950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档