2016-06-24 16 views
-1

我想檢查本地主機是否可達的iOS Swift2.2可訪問的主機IP

private static func checkHostaviable(){ 
    if ([[Reachability, reachabilityWithHostName,:"google.com"],currentReachabilityStatus] == false) { 

    NSLog("not available"); 
    } 
    else{ 
    NSLog("available"); 
    } 
    } 

,但它不是真正的工作..

什麼想法?

+1

你的代碼中隨機逗號是什麼? – dan

+2

你也在混合Objective-C和Swift – dan

回答

0

這裏的常規方式,而谷歌的方式(斯威夫特):

let reachability: Reachability = Reachability.reachabilityForInternetConnection() 
    let networkStatus:NetworkStatus = reachability.currentReachabilityStatus() 

    if (networkStatus != NotReachable) 
    { 
     print("has access") 
    } 
    else 
    { 
     print("no access") 
    } 

    // Google explicit: 
    let networkStatusGoogle = Reachability.init(hostName: "google.com").currentReachabilityStatus() 
    if (networkStatusGoogle != NotReachable) 
    { 
     print("has access to google") 
    } 
    else 
    { 
     print("no access to google") 
    } 

Objective-C的方法是well documented by Apple,但在這一點上,你應該使用斯威夫特。

+0

恩對不起,我是swift/iOS開發的新手..對理解語法仍然有點問題。你的代碼不適用於我..我應該在哪裏實現這個? Appdelegated?或直接在可達性類中? – simplesystems

+0

我需要添加錯誤處理(try&catch)和(networkStateHost!= Reachability.NetworkStatus.NotReachable),而不是(networkStatusGoogle!= NotReachable),但仍然不起作用,現在每個主機都可到達 – simplesystems

+0

可達性不會爲您捕獲任何異常。可達性狀態是三個值之一:NotReachable = 0,ReachableViaWiFi,ReachableViaWWAN。如果你喜歡你的代碼,你可以檢查這三個枚舉。通常人們在網絡調用之前調用Reachability,但他們也有一個模型,您可以訂閱Reachability狀態更改(請參閱Apple的示例應用程序)。 –