我的应用基于TableView,该TableView使用Alamofire从服务器下载了一些数据。因此,因为必须要有互联网连接才能使用我的应用程序,所以我要连续检查它。我找到了创建此类的解决方案:
class Connectivity {
class func isConnectedToInternet() -> Bool {
return NetworkReachabilityManager()!.isReachable
}
}
然后在每种方法中添加以下代码行以检查Internet连接
if !Connectivity.isConnectedToInternet() {
print("No internet connection")
} else {
print("connected")
}
它有效,但我认为这不是连续检查连接的正确方法。我认为我必须使用来自appDelegate的NotificationCenter来实现一些观察者,但我不知道该怎么做...
答案 0 :(得分:0)
请勿执行此操作!苹果多年来一直表示,您永远不应将可达性检查作为发出请求的先决条件。相反,您应该发出请求并处理失败,使用可访问性在检测到连接重新建立后可能重试该请求。可到达性并不是100%可靠的,现在NWPathMonitor类也已弃用。
答案 1 :(得分:0)
正如乔恩·希尔(Jon Shier)和马特(Matt)所说,您不应该这样做。实际上,如果您使用Alamofire下载图像,建议您改用AlamofireImage并使用以下代码:
let url = URL(string: yourUrl)!
cell.yourImage.af_setImage(
withURL: url,
placeholderImage: placeholderImage,
imageTransition: .crossDissolve(0.2),
runImageTransitionIfCached: false,
completion: { response in
if response.result.isSuccess {
self.dismissLabel()
} else if response.error?._code == NSURLErrorNotConnectedToInternet{
self.showLabel()
}
})
因此,基本上,当AlamofireImage下载图像时检索到连接错误时,您可以显示一个标签“ No internet Connection”。相反,如果下载成功,则您取消标签。