可达性示例代码

Igo*_*nik 0 reachability ios

我正在使用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))
{
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*ite 7

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

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

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

它花了30秒的时间来跟踪这个错误.通过向自己提出明显的问题并听取编译器消息,您将节省大量时间.

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

if (internetStatus == NotReachable) {}
Run Code Online (Sandbox Code Playgroud)

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

if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable) {}
Run Code Online (Sandbox Code Playgroud)