Код ошибки NSURLErrorDomain -999 в iOS
Я пытался использовать Facebook API Corona SDK, чтобы опубликовать счет в игре, которую я разрабатываю на facebook. Однако, у меня возникли проблемы с ним. В первый раз, когда я пытаюсь опубликовать в facebook, я получаю эту ошибку после входа в систему и аутентификации пользователя:
код ошибки NSURLErrorDomain -999
тогда он не будет публиковаться на facebook. Каковы возможные причины этой ошибки и как я могу решить это? Я пробовал искать в интернете, но не смог найти информация о нем. Спасибо заранее.
кстати, я не использую webview в своем приложении. Просто виджет api и слушатель show_dialog в моем классе Facebook.
3 ответов:
ошибка была задокументирована на Библиотека Разработчиков Mac(iOS docs)
соответствующий сегмент из документации будет:
URL загрузка системных кодов ошибок
эти значения возвращаются как свойство кода ошибки NSError объект с доменом "NSURLErrorDomain".
enum { NSURLErrorUnknown = -1, NSURLErrorCancelled = -999, NSURLErrorBadURL = -1000, NSURLErrorTimedOut = -1001,
Как видите;
-999
причиненаErrorCancelled
. Это означает: другой запрос выполняется до завершения предыдущего запроса.
hjpotter92 абсолютно прав, я просто хочу предоставить решение для моего случая. Надеюсь, это полезно и для вас. Вот моя ситуация:
на странице входа > нажмите вход > всплывающее окно загрузки > вызовите службу > закрыть диалог > нажмите другой экран > вызовите другую службу -- > вызовите ошибку -999
чтобы исправить это, я поставил задержку между отклонением диалога и нажатием нового экрана:
[indicatorAlert dismissWithClickedButtonIndex:0 animated:YES]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ [self performSegueWithIdentifier:@"HomeSegue" sender:nil]; });
странно, что эта проблема происходит только на iOS 7.
Я не использовал Facebook API Corona SDK, но я столкнулся с этой проблемой при использовании Alamofire,
secondRequest
всегда отменяйте в исполнении с ошибкой -999, согласно сообщениям, которые я нашел в интернете, причина в том, чтоsession
недвижимостьdeinit
перед завершением асинхронной работы, так как она выходит за рамки, я, наконец, решил эту проблему с помощьюdeinit
свойства сессии вручную, поэтому компилятор не деинициализации его в неправильном положении:class SessionManager { var session:SessionManager? init() { self.session = SessionManager(configuration:URLSessionConfiguration.ephemeral) } private func firstRequest() { guard let session = self.session else {return} session.request(request_url).responseData {response in if let data=response.data { self.secondRequest() } } private func secondRequest() { guard let session = self.session else {return} session.request(request_url).responseData {response in if let data=response.data { self.secondRequest() } //session will no longer be needed, deinit it self.session = nil } }
Comments