我的AppDelegate.m
中包含以下代码-NSLog
的结果始终为(null)
,因此永远不会触发无法访问的条件。我想知道为什么会这样/我做错了什么。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[IKRestKitManager configureRestKit];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
[self prepareForLogin];
return YES;
}
#pragma mark - onstart
- (void)prepareForLogin {
if ([[[RKClient sharedClient] reachabilityObserver] isReachabilityDetermined] && ![[RKClient sharedClient] isNetworkReachable]) {
UIAlertView *reachAV = [[UIAlertView alloc] initWithTitle:@"Cannot connect to Internet" message:@"iK9 cannot reach the Internet. Please be sure that your device is connected to the Internet and try again." delegate:self cancelButtonTitle:@"Retry" otherButtonTitles:nil];
reachAV.tag = 0;
[reachAV show];
}
NSLog(@"%@",[[[RKClient sharedClient] reachabilityObserver] isReachabilityDetermined]);
if (![IKUserController loggedInUser]) {
IKLoginViewController *loginVC = [[IKLoginViewController alloc] init];
loginVC.scenario = SCENARIO_NEW;
[self.window.rootViewController presentModalViewController:loginVC animated:YES];
}
}
最佳答案
根据RKReachabilityObserver
的文档:
初始化后,RKReachabilityObserver实例处于不确定状态,以指示尚未建立可达性状态。观察者处理完第一个回调后,观察者将对YES进行可达性确定的回答,并且networkStatus将返回确定的响应。
您需要等到确定可达性状态后,才能检查连接是否可用。这就是为什么您的第一个if语句未触发的原因。
要监视此更改,请设置通知观察者(来自this Stack Overflow question):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityStatusChanged:)
name:RKReachabilityDidChangeNotification object:nil];
关于iphone - RestKit可达性null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10377622/