Эй У меня есть приложение я работаю, и часто я получаю следующее сообщение:Лучший способ справиться ошибки NSURLConnection - IPhone Разработка
NSURLConnection error: Error Domain=NSURLErrorDomain Code=-1005
"The network connection was lost."
Мой журнал будет регистрировать это и чем мое приложение будет замерзать. Я надеюсь, что мой лучший вариант просто отправить уведомление о том, что Интернет был утерян, и повторите попытку, а не закрытие моего приложения?
Вот что я делаю:
логины -> Основные нагрузки и контроллер работает следующим образом:
// EXECUTE SERVER CALL
-(void)makeRequests
{
/* GRAB USERNAME TO BE SENT OVER FOR POPULATING DATA */
NSArray *get = [[SSKeychain allAccounts] init];
NSString *username = [get[0] objectForKey:@"acct"];
NSDictionary *dictionary = @{@"function": @"populateHomePage", @"username" : username};
NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (error)
NSLog(@"%s: JSON encode error: %@", __FUNCTION__, error);
NSURL *url = [NSURL URLWithString:@"/IOS-Frame/grab-data.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
NSString *params = [NSString stringWithFormat:@"json=%@",
[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *paramsData = [params dataUsingEncoding:NSUTF8StringEncoding];
[request addValue:@"8bit" forHTTPHeaderField:@"Content-Transfer-Encoding"];
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%lu", (unsigned long)[paramsData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:paramsData];
// issue the request
NSURLResponse *response = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (error)
NSLog(@"%s: NSURLConnection error: %@", __FUNCTION__, error);
NSString *responseString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"responseString: %@",responseString);
// GRAB STATUS OBJECT
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:returnData //1
options:kNilOptions
error:&error];
self.dataGrabed_dictionary = [json objectForKey:@"retrieved_data"];
}
Вы используете свои веб-сервисы в главной теме? Это единственная причина, по которой я могу думать, что это заморозит ваше приложение. В общем, вы хотите сделать вызовы веб-сервисов на потоках фона, чтобы они не блокировали ваш пользовательский интерфейс во время выполнения. – Stonz2
Hey @ stonz2 более конкретно Я запускаю веб-api из моего сервера, чтобы получить данные о загрузке основного файла вида. Итак, что происходит, пользователь регистрируется и отправляется в представление таблицы, которое заполняет данные из базы данных на моем веб-сервере. –
Использует ли ваш «веб-api retrieve» использовать обратные вызовы делегатов веб-сервисов, такие как «connectionDidFinishLoading:» и «connection: didFailWithError:», и если да, правильно ли вы обрабатываете его при сбое соединения? Трудно догадаться, что может быть неправильным, когда вы предоставили такую небольшую информацию о том, как работает ваше приложение. – Stonz2