Ios 如何测试internet连接和加载本地核心数据

Ios 如何测试internet连接和加载本地核心数据,ios,connectivity,Ios,Connectivity,我有一个在AppDelegate上调用SyncEngine的应用程序。这将启动从parse.com获取数据并将数据解析为本地对象并将该信息存储在设备上的核心数据数据库中的过程 然后,应用程序加载一个带有2个ViewController的tabbarcontroller: 1) 地图视图控制器 2) tableview控制器 地图视图控制器将核心数据加载到阵列中,并使用它在地图上绘制位置。tablevc获取相同的数据并将其放入单元格中 我正在尝试让应用程序检查互联网连接,并根据数据是获取的还是本地

我有一个在AppDelegate上调用SyncEngine的应用程序。这将启动从parse.com获取数据并将数据解析为本地对象并将该信息存储在设备上的核心数据数据库中的过程

然后,应用程序加载一个带有2个ViewController的tabbarcontroller:

1) 地图视图控制器 2) tableview控制器

地图视图控制器将核心数据加载到阵列中,并使用它在地图上绘制位置。tablevc获取相同的数据并将其放入单元格中

我正在尝试让应用程序检查互联网连接,并根据数据是获取的还是本地的来加载数据。交易如下:

viewDidLoad在mapVC中注册数据加载完成(从web)的通知。一旦发生这种情况,它将调用loadResultsFromCoreData方法,该方法将执行CD提取请求。因此,如果没有互联网连接,将永远不会收到该通知

我的问题是,何时何地是检查互联网连接的最佳地点?到目前为止,我在AppDelegate中使用了这段代码,但当然,这还为时过早,因此BOOLs被设置为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;
    }
}

任何帮助:)

我认为问题出在您的互联网络工作方法上。可访问性WithHost在创建后需要时间连接到指定站点,并且您立即开始轮询该站点。您可能应该做的是向您创建的可达性对象注册状态更改通知。苹果的可达性示例中有一个例子,但要点如下:

// Register to find out when reachability status changes
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(<Whatever method you want to respond to reachability changes>) name: kReachabilityChangedNotification object: nil];

// Create a reachability object to start monitoring
Reachability* reach = [[Reachability reachabilityWithHostName: @"www.google.com"] retain];

// Start broadcasting status changes from the reachability object
[reach startNotifier];
//注册以了解可达性状态何时更改
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector()名称:kReachabilityChangedNotification对象:nil];
//创建可访问性对象以开始监视
可达性*reach=[[Reachability Reachability with hostname:@“www.google.com”]retain];
//从可达性对象开始广播状态更改
[到达startNotifier];