2014-09-19 9 views
13

Sto riscrivendo il mio codice Objective-C esistente (iOS) a Swift e ora sto affrontando alcuni problemi con la classe Reachability di Apple per verificare la disponibilità di rete ... Nel mio codice esistente sto usando il seguendo per averlo raggiunto.Utilizzo della classe di raggiungibilità di Apple in Swift

var reachability: Reachability = Reachability.reachabilityForInternetConnection() 
var internetStatus:NetworkStatus = reachability.currentReachabilityStatus() 
if (internetStatus != NotReachable) { 
    //my web-dependent code 
} 
else { 
    //There-is-no-connection warning 
} 

E sto ottenendo questo errore: network status is not convertible to string a questa linea:

if (internetStatus != NotReachable) 

Esiste un metodo o di classe per ottenere lo stato della rete?

ho bisogno di queste tre condizioni:

NotReachable: Obviously, there’s no Internet connection 
ReachableViaWiFi: Wi-Fi connection 
ReachableViaWWAN: 3G or 4G connection 
+1

Questo potrebbe essere utile ... https://github.com/ashleymills/Reachability.swift –

+0

Ho aggiunto una risposta più completa qui penso: http://stackoverflow.com/a/29787876/210456 – Dragouf

+1

http://github.com/ashleymills/Reachability.swift ora ha il supporto CocoaPod –

risposta

19

Per informazioni sulla disponibilità della rete (opere a Swift 2):

class func hasConnectivity() -> Bool { 
    let reachability: Reachability = Reachability.reachabilityForInternetConnection() 
    let networkStatus: Int = reachability.currentReachabilityStatus().rawValue 
    return networkStatus != 0 
} 

Per una connessione Wi-Fi:

(reachability.currentReachabilityStatus().value == ReachableViaWiFi.value) 
+0

** let networkStatus: Int = reachability.currentReachabilityStatus(). RawValue ** NOT ** let networkStatus: Int = reachability.currentReachabilityStatus(). Value ** – lee

+3

qual è l'intestazione da importare? –

+0

"import ReachabilitySwift" e scaricare da https://github.com/ashleymills/Reachability.swift o utilizzando cocapods – Jason

0

Prova di seguito codice

let connected: Bool = Reachability.reachabilityForInternetConnection().isReachable() 

     if connected == true { 
      println("Internet connection OK") 
     } 
     else 
     { 
      println("Internet connection FAILED") 
      var alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK") 
      alert.show() 
     } 
0

inserisci questo codice nella tua appDelegata per controllare la raggiungibilità.

//MARK: reachability class 
func checkNetworkStatus() -> Bool { 
    let reachability: Reachability = Reachability.reachabilityForInternetConnection() 
    let networkStatus = reachability.currentReachabilityStatus().rawValue; 
    var isAvailable = false; 

    switch networkStatus { 
    case (NotReachable.rawValue): 
     isAvailable = false; 
     break; 
    case (ReachableViaWiFi.rawValue): 
     isAvailable = true; 
     break; 
    case (ReachableViaWWAN.rawValue): 
     isAvailable = true; 
     break; 
    default: 
     isAvailable = false; 
     break; 
    } 
    return isAvailable; 
} 
0

semplicemente usare come questo

do { 
    let reachability: Reachability = try Reachability.reachabilityForInternetConnection() 

    switch reachability.currentReachabilityStatus{ 
    case .ReachableViaWiFi: 
     print("Connected With wifi") 
    case .ReachableViaWWAN: 
     print("Connected With Cellular network(3G/4G)") 
    case .NotReachable: 
     print("Not Connected") 
    } 
} 
catch let error as NSError{ 
    print(error.debugDescription) 
} 
Problemi correlati