2017-07-30 54 views
0

我在github上使用了可达性库,发现here。我想通过点击一个按钮来检查设备是否在线。我对Reachability很陌生,因此从我看到的情况来看,您必须开始聆听变化,然后测试连接,然后停止收听。到目前为止,我已经在我的按钮动作中做到了这一点,但是当我点击按钮时,没有任何东西被打印到控制台。Swift 3从按钮到达

var reachability: Reachability! 
do { 
    try reachability?.startNotifier() 
} catch { 
    print("Unable to start notifier") 
} 


reachability?.whenReachable = { reachability in 

    DispatchQueue.main.async { 
     if reachability.isReachableViaWiFi { 
      print("Reachable via WiFi") 
     } else { 
      print("Reachable via Cellular") 
     } 
    } 
} 


reachability?.whenUnreachable = { reachability in 

    DispatchQueue.main.async { 
     print("Not reachable") 
    } 
} 


reachability?.stopNotifier() 

回答

1

你,因为使用隐式展开可选的有nil内。

更换,

var reachability: Reachability! 

let reachability = Reachability() 

下面尝试,

let reachability = Reachability() 

do { 
    try reachability?.startNotifier() 
} catch { 
    print("Unable to start notifier") 
} 


if reachability?.isReachable == true{ 

    if reachability?.isReachableViaWiFi == true{ 
     print("Reachable via WiFi") 
    } else if reachability?.isReachableViaWWAN == true{ 
     print("Reachable via WWAN simulator") 
    }else{ 
     print("Reachable via Cellular") 
    } 

}else{ 
    print("Not reachable") 
} 


reachability?.stopNotifier() 
+0

当一旦打印出“通过WiFi可达”按钮,我就点击了按钮,但如果再次单击按钮,则什么都不会发生。只能检查一次可达性吗? – Martheli

+0

@Martheli,尝试更新代码。 –

+0

工作。为什么这个版本能工作,但我的原始版本只打印一次? – Martheli

0

reachability?.stopNotifier()主线程块

+0

现在我得到'意外地发现nil'对'尝试reachability.startNotifier()' – Martheli