0

AppDelegate で SyncEngine を呼び出すアプリがあります。これにより、parse.com からデータをフェッチし、そのデータをローカル オブジェクトに解析して、その情報をデバイスのコア データ データベースに格納するプロセスが開始されます。

次に、アプリは、2 つのビュー コントローラーを含むタブバー コントローラーを読み込みます。

1) マップビュー コントローラ 2) テーブルビュー コントローラ

マップ ビュー コントローラーはコア データ データを配列に読み込み、それを使用してマップ上の位置をプロットします。tablevc は同じデータを取得し、それをセルに入れます。

アプリにインターネット接続をチェックさせ、フェッチされたかローカルかに応じてデータをロードしようとしています。契約は次のとおりです。

mapVC の viewDidLoad は、データの読み込みが完了したときの通知を登録します (Web から)。それが発生すると、CD フェッチ要求を実行する loadResultsFromCoreData メソッドを呼び出します。そのため、インターネット接続がない場合、その通知は受信されません。

私の質問は、いつ、どこでインターネット接続を確認するのに最適な場所ですか? これまでのところ 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;
    }
}

どんな助け:)

4

1 に答える 1