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


    目录:[Swift]Xcode实际操作

    本文将演示如何使用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 }
  • 相关阅读:
    JVM调优总结(八)-典型配置举例2
    JVM调优总结(七)-典型配置举例1
    ajax---异步请求对象的属性和方法
    ajax----发送异步请求的步骤
    ajax---获取XMLHttpReuquest 对象
    ajax--参数默认值问题
    ajax--参数映射方式实现阴影效果
    ajax-简单参数方法实现阴影效果
    ajax之阴影效果实现(对象函数方法)
    ajax对象方法的使用
  • 原文地址:https://www.cnblogs.com/strengthen/p/10054684.html
Copyright © 2020-2023  润新知