我的应用程序基于TableView,它使用Alamofire从服务器下载一些数据。因此,有必要建立互联网连接以使用我的应用程序,我想连续检查它。我找到了创建这个类的解决方案:
class Connectivity {
class func isConnectedToInternet() -> Bool {
return NetworkReachabilityManager()!.isReachable
}
}
我在每种方法中添加这些代码行来检查Internet连接
if !Connectivity.isConnectedToInternet() {
print("No internet connection")
} else {
print("connected")
}
它可以工作,但我不认为这是连续检查连接的正确方法。我想我要使用appDelegate的notificationCenter实现一些观察者,但我不知道怎么做...
正如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”。相反,如果它成功下载它你解雇标签。
不要这样做! Apple多年来一直表示,您绝不应该使用可达性检查作为提出请求的先决条件。相反,您应该发出请求并处理失败,使用可达性来检测连接已重新建立时重试请求。可达性不是100%可靠,现在也被NWPathMonitor类弃用。