可达性示例代码

时间:2009-12-21 22:11:07

标签: ios reachability

我正在使用Apple网站的Reachability示例代码。我已将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 个答案:

答案 0 :(得分:7)

Reachability.h列举了三种类型:NotReachable,ReachableViaWiFi和ReachableViaWWAN。

这些是您要检查的值,而不是ReachableViaWiFiNetwork或ReachableViaCarrierDataNetwork。

如果编译器说这些值是未声明的,那么您应该问自己从哪里获取这些值?追踪你认为应该在哪里(Reachable前缀是一个线索),然后找出你的错误。

跟踪此错误需要花费30秒的时间。通过问自己明显的问题并听取编译器消息,你可以节省大量的时间。

检查也会更清洁,更有效率,

if (internetStatus == NotReachable) {}

此外,我不会创建实例变量并保存可访问性,因为这可能会更改(因为这是针对 移动 设备)。每次需要时都要检查连接是否更安全。因此,我倾向于写,

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