Пример кода достижимости - PullRequest
0 голосов
/ 22 декабря 2009

Я использую образец кода Reachability с сайта Apple. Я добавил файлы Reachability.h и Reachability.m в свой проект, а также добавил SystemConfiguration.framework. Добавлен #import "Reachability.h" в мой файл .m контроллера и объявлена ​​переменная достижимости в моем .h файле контроллера. Все компилируется без ошибок, пока я не начну использовать экземпляры Reachability.

Я получаю ReachableViaWiFiNetwork и ReachableViaCarrierDataNetwork необъявленная ошибка.

Почему это происходит?

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

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

1 Ответ

7 голосов
/ 22 декабря 2009

Reachability.h перечисляет три типа: NotReachable, ReachableViaWiFi и ReachableViaWWAN.

Это значения, которые вы хотите проверить, а не ReachableViaWiFiNetwork или ReachableViaCarrierDataNetwork.

Если компилятор говорит, что значения не объявлены, вы должны спросить себя, откуда вы взяли эти значения? Отыщите, где, по вашему мнению, они должны быть (префикс Reachable - подсказка), а затем найдите свою ошибку.

Потребовалось буквально 30 секунд, чтобы отследить эту ошибку. Вы сэкономите много времени, задавая очевидные вопросы и слушая сообщения компилятора.

Было бы также чище и эффективнее проверять,

if (internetStatus == NotReachable) {}

Кроме того, я бы не создавал переменную экземпляра и не сохранял бы достижимость, поскольку она может измениться (так как это для мобильного устройства). Безопаснее проверять соединение каждый раз, когда оно вам нужно. Поэтому я бы хотел написать:

if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable) {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...