可达性示例代码
我正在使用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) {}