Код ошибки 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 абсолютно прав, я просто хочу предоставить решение для моего случая. Надеюсь, это полезно и для вас. Вот мое положение:--2-->
на странице Вход > нажмите вход > всплывающее диалоговое окно загрузки > вход в службу > закрыть диалоговое окно > нажмите другой экран > вызов другой службы -- > вызвать ошибку -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
}
}