Я загружаю документ JSON из своего приложения на сервер в Интернете, и я могу сделать это успешно. Однако сейчас мне нужно определить, когда нет подключения к Wi-Fi или 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 отсутствие соединения и выдать пользователю предупреждение об отсутствии соединения и о том, хотят ли они сохранить документ локально?
connection:didReceiveResponse:
и проверить код состояния (NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*) response; if (httpResponse.statusCode != 200) ...
). И вам нужно будет реализоватьconnection:didFailWithError:
. Это все, о чем я могу думать. - person Codo   schedule 30.12.2012