[Xcode 实际操作]八、网络与多线程-(1)使用Reachability类库检测网络的连接状态
本文将演示如何使用Reachability网络状态检测库,检测设备的网络连接状态。
需要下载一个开源的类库:【ashleymills/Reachability.swift】
这是一个用来检测设备网络状态的库。
支持自动引用计数,并且使用闭包的方式,来通知网络状态的变化。
【Clone or download】下载类库。
将【Sources】->【Reachability.swift】文件拖入到项目中,只需要添加这个文件即可。
->【Finish】将文件导入到项目中。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 //给当前的视图控制器添加一个网络监测属性 6 var reachability : Reachability! 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 //对网络监测属性进行初始化 12 reachability = Reachability() 13 14 //调用网络监测方法,判断当前设备的网络环境 15 reachability.whenReachable = { reachability in 16 //获得网络状态之后返回主线程进行响应 17 DispatchQueue.main.async 18 { 19 //如果当前的网络环境,是通过无线网络连接 20 if reachability.connection == .wifi 21 { 22 //则在控制台打印输出日志 23 print("Reachable via WiFi") 24 } 25 else 26 { 27 //如果当前的网络环境是蜂窝移动网络 28 //则在控制台打印输出相关日志 29 print("Reachable via Cellular") 30 } 31 } 32 } 33 34 //处理网络无法连接的情况。 35 reachability.whenUnreachable = { reachability in 36 //如果设备无网络连接 37 DispatchQueue.main.async 38 { 39 //则在控制台打印输出相关日志 40 print("Not reachable") 41 } 42 } 43 44 //创建一个异常捕捉语句 45 do 46 { 47 //调用网络检测对象的开始检测方法, 48 //开始检测网络的状态 49 try reachability.startNotifier() 50 } 51 catch 52 { 53 print("Unable to start notifier") 54 } 55 } 56 57 //在视图控制器类的析构方法中 58 deinit 59 { 60 //停止网络状态的检测 61 reachability.stopNotifier() 62 } 63 64 override func didReceiveMemoryWarning() { 65 super.didReceiveMemoryWarning() 66 // Dispose of any resources that can be recreated. 67 } 68 }