2009-12-21 6 views
0

J'utilise un exemple de code d'accessibilité provenant du site Apple. J'ai ajouté les fichiers Reachability.h et Reachability.m à mon projet, j'ai aussi ajouté SystemConfiguration.framework. Ajout de #import "Reachability.h" à mon fichier contrôleur .m et à la variable d'accessibilité déclarée dans le fichier .h du contrôleur. Tout compile sans erreur jusqu'à ce que je commence à utiliser les instances d'accessibilité.Exemple de code d'accessibilité

Je reçois ReachableViaWiFiNetwork et ReachableViaCarrierDataNetwork non déclaré erreur.

Pourquoi cela se produit-il?

reachability = [Reachability reachabilityForInternetConnection]; 
NetworkStatus internetStatus = [reachability currentReachabilityStatus]; 

if ((internetStatus != ReachableViaWiFiNetwork) && (internetStatus != ReachableViaCarrierDataNetwork)) 
{ 
} 

Répondre

7

Reachability.h trois types: énumère NotReachable, ReachableViaWiFi et ReachableViaWWAN.

Ce sont les valeurs que vous voulez vérifier, pas ReachableViaWiFiNetwork ou ReachableViaCarrierDataNetwork.

Si le compilateur dit que les valeurs ne sont pas déclarées, vous devriez vous demander d'où vous avez obtenu ces valeurs? Trouvez où vous croyez qu'ils devraient être (le préfixe accessible est un indice) et trouvez votre erreur.

Il a fallu littéralement 30 secondes pour suivre cette erreur. Vous économiserez beaucoup de temps en vous posant des questions évidentes et en écoutant les messages du compilateur.

Il serait également plus propre et plus efficace pour vérifier,

if (internetStatus == NotReachable) {} 

Aussi je ne créeraient pas une variable d'instance et enregistrez le joignabilité car cela pourrait changer (car cela est un mobile dispositif). Il est plus sûr de vérifier la connexion chaque fois que vous en avez besoin. En tant que tel, je serais enclin à écrire,

if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable) {} 
+0

Vous avez 100% raison. –