[Xcode 实际操做]8、网络与多线程-(1)使用Reachability类库检测网络的链接状态

目录:[Swift]Xcode实际操做html

本文将演示如何使用Reachability网络状态检测库,检测设备的网络链接状态。git

须要下载一个开源的类库:【ashleymills/Reachability.swift】github

这是一个用来检测设备网络状态的库。swift

支持自动引用计数,而且使用闭包的方式,来通知网络状态的变化。网络

【Clone or download】下载类库。闭包

将【Sources】->【Reachability.swift】文件拖入到项目中,只须要添加这个文件便可。async

->【Finish】将文件导入到项目中。ide

在项目导航区,打开视图控制器的代码文件【ViewController.swift】post

 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 }
相关文章
相关标签/搜索