2017-07-30 11 views
0

J'utilise la bibliothèque Reachability sur github trouvé here. Je veux vérifier si l'appareil est en ligne en cliquant sur un bouton. Je suis novice dans le domaine de l'accessibilité. D'après ce que j'ai vu, vous devez commencer à écouter le changement, puis tester la connexion et arrêter d'écouter. Jusqu'ici j'ai ceci dans mon action de bouton mais quand je clique sur le bouton, rien ne s'imprime à la console.Swift 3 Reachability à partir du bouton

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() 

Répondre

1

Vous avez nil en raison de l'utilisation implicitement déballés en option.

Remplacer,

var reachability: Reachability! 

à

let reachability = Reachability() 

Essayez ci-dessous,

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

Lorsque Je tape sur le bouton une fois qu'il imprime "accessible via WiFi" mais si je clique sur le bouton à nouveau rien ne se passe. L'accessibilité ne peut-elle être vérifiée qu'une seule fois? – Martheli

+0

@Martheli, Essayez le code mis à jour. –

+0

Cela a fonctionné. Pourquoi cette version fonctionne-t-elle mais ma version originale ne s'imprime qu'une seule fois? – Martheli

0

Mettre le reachability?.stopNotifier() à l'intérieur du bloc principal de fil

+0

Maintenant, je reçois 'trouvé de manière inattendue sur nil'' essayer reachability.startNotifier() ' – Martheli