我有一个在 AppDelegate 上调用 SyncEngine 的应用程序。这启动了从 parse.com 获取数据并将该数据解析为本地对象并将该信息存储在设备上的核心数据数据库中的过程。
然后,该应用程序会加载一个带有 2 个视图控制器的 tabbarcontroller:
1) 地图视图控制器 2) 表格视图控制器
地图视图控制器将核心数据数据加载到一个数组中,并使用它在地图上绘制位置。tablevc 获取相同的数据并将其放入单元格中。
我试图让应用程序检查互联网连接并根据数据是获取的还是本地的来加载数据。这是交易:
mapVC 中的 viewDidLoad 注册了数据何时完成加载(来自网络)的通知。一旦发生这种情况,它就会调用 loadResultsFromCoreData 方法来执行 CD 获取请求。因此,如果没有互联网连接,则永远不会收到该通知。
我的问题是,何时何地是检查互联网连接的最佳地点?到目前为止,我在 AppDelegate 中使用此代码,但当然,它为时过早,所以 BOOL 设置为 NO:
- (BOOL) connectedToNetwork
{
Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
BOOL internet;
if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN)) {
internet = NO;
} else {
internet = YES;
}
return internet;
}
-(BOOL) checkInternet
{
//Make sure we have internet connectivity
if([self connectedToNetwork] != YES) {
UIAlertView *internetAlert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Internet Required" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
[internetAlert show];
return NO;
} else {
return YES;
}
}
任何帮助:)