1

アプリからWeb上のサーバーにJSONドキュメントをアップロードしていますが、これを正常に実行できます。ただし、ここで行う必要があるのは、WiFiまたは3G接続がないことを検出し、アプリが接続できないことをユーザーに通知するアラートをユーザーに表示してから、JSONドキュメントをとして保存するオプションをユーザーに提供することです。ローカルの.plistファイル。

これが私がこれまでに持っているコードです:

これは、JSONドキュメントをサーバーにアップロードする私の方法です。

- (void) sendJsonDoc:(NSString *)jDoc {

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://myWebsite.php"]];

    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-type"];

    [request setValue:[NSString stringWithFormat:@"%d", [jDoc length]] forHTTPHeaderField:@"Content-length"];

    [request setHTTPBody:[jDoc dataUsingEncoding:NSUTF8StringEncoding]];

    [NSURLConnection connectionWithRequest:request delegate:self];

}




- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
    int code = [httpResponse statusCode];
    NSLog(@"%d", code);

}

JSONドキュメントをplistファイルとしてローカルに保存するために私が持っているコードは次のとおりです。

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    path = [path stringByAppendingPathComponent:@"jsonDoc.plist"];

    // If the file doesn't exist in the Documents Folder, copy it.
    NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath:path]) {
        NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"jsonDoc" ofType:@"plist"];
        [fileManager copyItemAtPath:sourcePath toPath:path error:nil];
    }

    // Load the Property List.
    NSString *loadJSON = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

接続がない場合にsendJsonDocメソッドで検出し、接続がないことをユーザーに促すアラートをユーザーに発行し、ドキュメントをローカルに保存する場合はどうすればよいですか?

4

1 に答える 1

1

Reachabilityフレームワーク/ライブラリを確認してください。

tonymillionは、ARCを使用するように適合され、ブロックのサポートも追加された、Appleが提供する素晴らしいバージョンを作成しました。githubのreadmeには、接続の変更に関する通知をサブスクライブする方法も説明されています:)

ここでプロジェクトをチェックしてください

于 2012-12-30T05:19:50.140 に答える