我正在使用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))
{
}
Reachability.h枚举了三种类型:NotReachable,ReachableViaWiFi和ReachableViaWWAN.
这些是您要检查的值,而不是ReachableViaWiFiNetwork或ReachableViaCarrierDataNetwork.
如果编译器说这些值是未声明的,那么您应该问自己从哪里获取这些值?追踪你认为应该在哪里(Reachable前缀是一个线索),然后找出你的错误.
它花了30秒的时间来跟踪这个错误.通过向自己提出明显的问题并听取编译器消息,您将节省大量时间.
检查也会更清洁,更有效率,
if (internetStatus == NotReachable) {}
此外,我不会创建一个实例变量并保存可达性,因为这可能会改变(因为这是针对移动设备).每次需要时都要检查连接是否更安全.因此,我倾向于写,
if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable) {}
| 归档时间: | 
 | 
| 查看次数: | 6400 次 | 
| 最近记录: |