可达性示例代码

我正在使用Apple站点的Reachability示例代码。 我已经添加了Reachability.h和Reachability.m文件到我的项目中,我也添加了SystemConfiguration.framework。 在我的视图控制器.h文件中添加了#import“Reachability.h”,并在我的视图控制器.h文件中声明了可达性variables。 在我开始使用Reachability实例之前,所有东西都没有错误地编译。

我得到ReachableViaWiFiNetwork和ReachableViaCarrierDataNetwork未申报的错误。

为什么会这样呢?

reachability = [Reachability reachabilityForInternetConnection]; NetworkStatus internetStatus = [reachability currentReachabilityStatus]; if ((internetStatus != ReachableViaWiFiNetwork) && (internetStatus != ReachableViaCarrierDataNetwork)) { } 

Reachability.h枚举了三种types:NotReachable,ReachableViaWiFi和ReachableViaWWAN。

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

如果编译器说价值是不公开的,你应该问自己,你从哪里得到这些价值? 跟踪你认为他们应该在哪里(可达前缀是一个线索),然后find你的错误。

花了30秒来追踪这个错误。 通过问自己显而易见的问题并听取编译器消息,您将节省大量时间。

这也将是更清洁和更有效率的检查,

 if (internetStatus == NotReachable) {} 

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

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