Nsurlerrordomain ошибка 999 тинькофф

I have big trouble with NSURLSession when i’ll terminate the App.
I have downloaded the apple sample:
https://developer.apple.com/library/ios/samplecode/SimpleBackgroundTransfer/Introduction/Intro.html

on Apple reference.

When i start download the file download correctly.
When i enter in background the download continues to.
When i terminate the application and i restart the app the application enter in:

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

And i catch this error:

The operation couldn't be completed. (NSURLErrorDomain error -999.)

It seems that i cannot restore download when app has been terminated. It’s correct?For proceed with download i must leave application active in background?

Thank you
Andrea

asked Oct 15, 2014 at 16:09

Andrea Bozza's user avatar

Andrea BozzaAndrea Bozza

1,3742 gold badges12 silver badges31 bronze badges

A couple of observations:

  1. Error -999 is kCFURLErrorCancelled.

  2. If you are using NSURLSessionDownloadTask, you can download those in the background using background session configuration, e.g.

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:kBackgroundIdentifier];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
    

    If not using background session (e.g. you have to use data task, for example), you can use beginBackgroundTaskWithExpirationHandler to request a little time for the app the finish requests in the background before the app terminates.

  3. Note, when using background sessions, your app delegate must respond to handleEventsForBackgroundURLSession, capturing the completion handler that it will call when appropriate (e.g., generally in URLSessionDidFinishEventsForBackgroundURLSession).

  4. How did you «terminate the app»? If you manually kill it (by double tapping on home button, holding down on icon for running app, and then hitting the little red «x»), that will not only terminate the app, but it will stop background sessions, too. Alternatively, if the app crashes or if it is simply jettisoned because foreground apps needed more memory, the background session will continue.

    Personally, whenever I want to test background operation after app terminates, I have code in my app to crash (deference nil pointer, like Apple did in their WWDC video introduction to NSURLSession). Clearly you’d never do that in a production app, but it’s hard to simulate the app being jettisoned due to memory constraints, so deliberately crashing is a fine proxy for that scenario.

answered Oct 15, 2014 at 16:40

Rob's user avatar

i insert this new lines of code:

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
    BLog();

    NSInteger errorReasonNum = [[error.userInfo objectForKey:@"NSURLErrorBackgroundTaskCancelledReasonKey"] integerValue];

    if([error.userInfo objectForKey:@"NSURLErrorBackgroundTaskCancelledReasonKey"] &&
       (errorReasonNum == NSURLErrorCancelledReasonUserForceQuitApplication ||
        errorReasonNum == NSURLErrorCancelledReasonBackgroundUpdatesDisabled))
    {
        NSData *resumeData = error.userInfo[NSURLSessionDownloadTaskResumeData];
        if (resumeData) {
            // resume
            NSURL *downloadURL = [NSURL URLWithString:DownloadURLString];
            NSURLRequest *request = [NSURLRequest requestWithURL:downloadURL];
            if (!self.downloadTask) {
                self.downloadTask = [self.session downloadTaskWithRequest:request];
                         }

            [self.downloadTask resume];
            if (!_session){
               [[_session downloadTaskWithResumeData:resumeData]resume];
                                         }
        }
    }
}

It catch NSURLErrorCancelledReasonUserForceQuitApplication but when the application try to [[_session downloadTaskWithResumeData:resumeData]resume]

reenter again in:

  • (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
    {

and give me again -999 error.

answered Oct 16, 2014 at 15:08

Andrea Bozza's user avatar

Andrea BozzaAndrea Bozza

1,3742 gold badges12 silver badges31 bronze badges

1

I use this configuration

- (NSURLSession *)backgroundSession
{
/*
 Using disptach_once here ensures that multiple background sessions with the same identifier are not created in this instance of the application. If you want to support multiple background sessions within a single process, you should create each session with its own identifier.
 */
    static NSURLSession *session = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.example.apple-samplecode.SimpleBackgroundTransfer.BackgroundSession"];
        session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
    });
    return session;
}

let me explain what i mean with «terminate the app» (in ios8):

  • double tap on home button
  • swipe on my open app.
  • app disappear from open app list
  • relaunch app.

When i reopen the app i enter into callback with error

The operation couldn't be completed. (NSURLErrorDomain error -999.)

There is something that i can’t understand. This behaviour make me crazy! :-(

answered Oct 15, 2014 at 21:38

Andrea Bozza's user avatar

Andrea BozzaAndrea Bozza

1,3742 gold badges12 silver badges31 bronze badges

I’ve been trying to use Corona SDK’s Facebook API to post the score on the game I’m developing on facebook. However, I’m having a problem with it. During the first time I try to post to facebook, I get this error after login and user authentication:

NSURLErrorDomain error code -999

Then, it won’t post on facebook. What are possible causes of this error and how can I address it?

By the way, I am not using webview on my app. Just the widget api and a show_dialog listener in my Facebook class.

starball's user avatar

starball

14.9k6 gold badges26 silver badges127 bronze badges

asked Apr 18, 2013 at 2:27

user1597438's user avatar

The error has been documented on the Mac Developer Library(iOS docs)

The concerned segment from the documentation will be:

URL Loading System Error Codes

These values are returned as the error code property of an NSError
object with the domain “NSURLErrorDomain”.

enum
{
   NSURLErrorUnknown = -1,
   NSURLErrorCancelled = -999,
   NSURLErrorBadURL = -1000,
   NSURLErrorTimedOut = -1001,

As you can see; -999 is caused by ErrorCancelled. This means: another request is made before the previous request is completed.

answered Apr 18, 2013 at 6:38

hjpotter92's user avatar

hjpotter92hjpotter92

78.1k36 gold badges141 silver badges179 bronze badges

13

Just wanted to add here, when receiving a -999 "cancelled" the problem usually is one of two things:

  • You’re executing the exact same request again.
  • You’re maintaining a weak reference to your manager object that gets deallocated prematurely. (Create strong reference)

answered Jan 14, 2019 at 9:34

Ramon's user avatar

RamonRamon

1,4059 silver badges18 bronze badges

5

hjpotter92 is absolutely right, I just want to provide solution for my case. Hopefully it is useful for you as well. Here is my situation:

On log in page > press log in > pop up loading dialog > call log in service > dismiss dialog > push another screen > call another service —> cause error -999

To fix it, I put a delay between dismissing dialog and pushing new screen:

    [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];
            });

It is strange that this issue happens on iOS 7 only.

answered Nov 29, 2013 at 7:31

thanhbinh84's user avatar

thanhbinh84thanhbinh84

17.7k6 gold badges62 silver badges69 bronze badges

3

I have faced the same error with Alamofire and it was because the certificate pinning.
The certificate wasn’t valid anymore, so I had to remove it and add the new one.
Hope it helps.

answered Jul 4, 2019 at 10:31

Pablo Blanco's user avatar

In addition to what Ramon wrote, there is a third possible reason when receiving a NSURLErrorDomain -999 cancelled:

You cancelled the task while it was executing either by calling .cancel() on the datatask object or because you used .invalidateAndCancel() on the session object. If you are creating a custom session with a delegate, you should call .invalidateAndCancel() or .finishTasksAndInvalidate() to resolve the strong reference between the session and its delegate, as mentioned in the Apple Developer Documentation:

The session object keeps a strong reference to the delegate until your app exits or explicitly invalidates the session. If you don’t invalidate the session, your app leaks memory until it exits.

If you are wondering about this logging behaviour, I found the following explanation in the Apple Developer forums:

By way of explanation, back in iOS 10 we introduced a new logging system-wide logging architecture (watch WWDC 2016 Session 721 Unified Logging and Activity Tracing for the details) and lots of subsystem, including CFNetwork, are in the process of moving over to that. Until that move is fully finished you’re going to encounter some weird edge cases like this one.

answered Aug 24, 2019 at 7:56

Christopher Graf's user avatar

Christopher GrafChristopher Graf

1,9091 gold badge17 silver badges34 bronze badges

I didn’t use Corona SDK’s Facebook API but I encountered this problem when using Alamofire, the secondRequest always cancel in execution with the error -999, according to the posts I found on internet, the reason is that session property is deinit before completion of async work since it is out of the scope, I finally solved this problem by deinit the session property manually so the compiler won’t deinit it at wrong position:

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
    }

    }

answered Dec 21, 2017 at 23:07

ilovecomputer's user avatar

ilovecomputerilovecomputer

4,1281 gold badge20 silver badges33 bronze badges

1

Our company’s app has many -999 error in iOS. I have searched around, find the reason has two, like the network task has been dealloc or the certificate isn’t valid. But I have checked our code, these two aren’t possible. I am using Alamofire
which is using URLSession. Luckily, our company’s android app’s network is normal. So we check the difference. We found the http request from iOS is Http2.0, while android is Http1.1. So we force the backend http support version down to http1.1, then -999 error count descends!!!

I think there maybe some bug in Apple’s URLSession. Check the link New NSURLSession for every DataTask overkill? for some detail thoughts

answered Jul 26, 2019 at 3:47

Dan Lee's user avatar

Dan LeeDan Lee

911 silver badge5 bronze badges

Please check If you call cancel() on URLSessionDataTask to fix

NSURLErrorDomain Code=-999 "cancelled"

answered Oct 25, 2020 at 17:57

yoAlex5's user avatar

yoAlex5yoAlex5

28.2k8 gold badges191 silver badges202 bronze badges

I was getting this error in iOS specific version of Xamarin app. Not sure the underlying cause, but in my case was able to work around it by using post method instead of get for anything passing the server context in the request body — which makes more sense anyway. Android / Windows / the service all handle the GET with content, but in iOS app will become partially unresponsive then spit out the 999 NSUrlErrorDomain stuff in the log. Hopefully, that helps someone else running into this. I assume the net code is getting stuck in a loop, but could not see the code in question.

answered Sep 12, 2019 at 19:39

Victor Thomas Wilcox Jr.'s user avatar

For my Cordova project (or similar), turns out it was a plugin issue. Make sure you’re not missing any plugins and make sure they’re installed properly without issue.

Easiest way to verify this is simply to start fresh by recreating the Cordova project (cordova create <path>) along with the required platforms (cordova platform add <platform name>) and add each plugin with the verbose flag (—verbose) so that you can see if anything went wrong in the console log while the plugin is being downloaded, added to project and installed for each platform (cordova plugin add cordova-plugin-device --verbose)

Recap:
cordova create <path>
cordova platform add <platform name>
cordova plugin add cordova-plugin-device --verbose

answered Oct 1, 2019 at 8:03

Vyrnach's user avatar

VyrnachVyrnach

1191 silver badge9 bronze badges

For my case, I used an upload task post that did not need body contents:

// The `from: nil` induces error "cancelled" code -999
let task = session.uploadTask(with: urlRequest, from: nil, completionHandler: handler)

The fix is to use zero byte data instead of nil,

let task = session.uploadTask(with: urlRequest, from: Data(), completionHandler: handler)

The framework documentation doesn’t specify why the from bodyData is an optional type, or what happens when it is nil.

answered Aug 11, 2021 at 17:43

dlalpine's user avatar

We solved this problem by reloading the web view when it failed loading.

extension WebViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        webView.reload()
    }
}

answered Mar 21, 2022 at 9:39

Edgardo Agno's user avatar

Интерфейс подобен контракту, в котором вы хотите, чтобы ваш класс реализации реализовал методы, написанные в контракте (интерфейс). Поскольку Java не предоставляет множественное наследование, программирование для интерфейса является хорошим способом достижения цели множественного наследования. Если у вас есть класс A, который уже расширяет какой-либо другой класс B, но вы хотите, чтобы класс A также следовал определенным рекомендациям или реализовывал определенный контракт, тогда вы можете сделать это путем программирования стратегии интерфейса.

задан hjpotter92 6 October 2015 в 08:02

поделиться

3 ответа

Ошибка зарегистрирована в Mac Developer Library (iOS docs)

Соответствующий сегмент из документации будет:

Коды ошибок системы загрузки URL

Эти значения возвращаются как свойство кода ошибки объекта NSError с доменом «NSURLErrorDomain».

enum
{
   NSURLErrorUnknown = -1,
   NSURLErrorCancelled = -999,
   NSURLErrorBadURL = -1000,
   NSURLErrorTimedOut = -1001,

Как вы можете видеть ; -999 вызвано ErrorCancelled. Это означает: выполняется другой запрос до завершения предыдущего запроса.

ответ дан hjpotter92 21 August 2018 в 17:23

поделиться

Я не использовал API Facebook Corona SDK, но я столкнулся с этой проблемой при использовании Alamofire, secondRequest всегда отменяют исполнение с ошибкой -999, согласно сообщениям, которые я нашел в Интернете, причина в том, что session свойство deinit до завершения работы async, так как оно выходит за рамки, я, наконец, решил эту проблему с помощью свойства 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
    }

    }

ответ дан luiyezheng 21 August 2018 в 17:23

поделиться

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.

ответ дан thanhbinh84 21 August 2018 в 17:23

поделиться

Другие вопросы по тегам:

Похожие вопросы:

Я пытался использовать API Facebook Corona SDK, чтобы опубликовать оценку игры, которую я разрабатываю, на facebook. Однако у меня с этим проблема. В первый раз, когда я пытаюсь отправить сообщение в facebook, я получаю эту ошибку после входа в систему и аутентификации пользователя:

Код ошибки NSURLErrorDomain -999

Тогда он не будет публиковаться на Facebook. Каковы возможные причины этой ошибки и как ее исправить? Я попытался выполнить поиск в Интернете, но не смог найти информацию об этом. Заранее спасибо.

Кстати, я не использую веб-просмотр в своем приложении. Просто api виджета и слушатель show_dialog в моем классе Facebook.

12 ответов

Лучший ответ

Ошибка задокументирована в библиотеке разработчика Mac (документы iOS)

Соответствующий сегмент из документации будет:

Коды ошибок системы загрузки URL

Эти значения возвращаются как свойство кода ошибки объекта NSError с доменом «NSURLErrorDomain».

enum
{
   NSURLErrorUnknown = -1,
   NSURLErrorCancelled = -999,
   NSURLErrorBadURL = -1000,
   NSURLErrorTimedOut = -1001,

Как вы видете; -999 вызвано ErrorCancelled . Это означает: другой запрос сделан до того, как предыдущий запрос будет выполнен.


146

hjpotter92
23 Дек 2019 в 12:24

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.


11

thanhbinh84
29 Ноя 2013 в 11:31

Я столкнулся с той же ошибкой с Alamofire, потому что сертификат закреплен. Сертификат больше не действовал, поэтому мне пришлось удалить его и добавить новый. Надеюсь, поможет.


6

Pablo Blanco
8 Июл 2019 в 10:34

Просто хотел добавить здесь, что при получении -999 "cancelled" проблема обычно заключается в одном из двух:

  • Вы снова выполняете тот же запрос.
  • Вы поддерживаете слабую ссылку на ваш объект manager, который преждевременно освобождается. (Создайте сильную ссылку)


12

Ramon
23 Авг 2019 в 21:47

Помимо того, что написал Рамон, существует третья возможная причина получения NSURLErrorDomain -999 cancelled:

Вы отменили задачу во время ее выполнения, либо вызвав .cancel() для объекта задачи данных, либо потому, что вы использовали .invalidateAndCancel() для объекта сеанса. Если вы создаете настраиваемый сеанс с делегатом, вам следует вызвать .invalidateAndCancel() или .finishTasksAndInvalidate(), чтобы разрешить сильную ссылку между сеансом и его делегатом, как указано в Документация разработчика Apple:

Объект сеанса сохраняет сильную ссылку на делегата до тех пор, пока ваше приложение не выйдет или не аннулирует сеанс явным образом. Если вы не аннулируете сеанс, ваше приложение будет терять память до завершения работы.

Если вас интересует такое поведение журнала, я нашел следующее объяснение на форумах разработчиков Apple :

В качестве пояснения, еще в iOS 10 мы представили новую общесистемную архитектуру ведения журнала (смотрите WWDC 2016 Session 721 Unified Logging and Activity Tracing для подробностей) и многие подсистемы, включая CFNetwork, находятся в процессе перехода к этому. Пока этот ход не будет полностью завершен, вы столкнетесь с некоторыми странными крайними случаями, подобными этому.


2

Chris Graf
24 Авг 2019 в 10:56

В приложении нашей компании много ошибок -999 в iOS. Я поискал, нашел, что у причины две, например, сетевая задача была освобождена или сертификат недействителен. Но я проверил наш код, эти два невозможны. Я использую Alamofire, который использует URLSession. К счастью, сеть Android-приложения нашей компании в норме. Итак, проверяем разницу. Мы обнаружили, что http-запрос от iOS — Http2.0, а android — Http1.1. Таким образом, мы принудительно понижаем версию поддержки HTTP до http1.1, после чего уменьшается количество ошибок -999 !!!

Я думаю, что в URL-сеансе Apple может быть какая-то ошибка. Проверьте ссылку New NSURLSession для каждого излишка DataTask? для некоторых подробных мыслей.


1

Dan Lee
26 Июл 2019 в 06:47

Я не использовал API Facebook 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
    }

    }


2

ilovecomputer
22 Дек 2017 в 02:07

Установите флажок «Если вы звоните cancel() на URLSessionDataTask«, чтобы исправить

NSURLErrorDomain Code=-999 "cancelled"


1

yoAlex5
25 Окт 2020 в 20:57

Я получал эту ошибку в версии приложения Xamarin для iOS. Не уверен в основной причине, но в моем случае удалось обойти ее, используя метод post вместо get для чего-либо, передавая контекст сервера в теле запроса — что в любом случае имеет больше смысла. Android / Windows / служба все обрабатывает GET с контентом, но в приложении iOS будет частично не отвечать, а затем выплюнуть материал 999 NSUrlErrorDomain в журнале. Надеюсь, это поможет кому-то другому столкнуться с этим. Я предполагаю, что сетевой код застревает в цикле, но не могу увидеть рассматриваемый код.


0

Victor Thomas Wilcox Jr.
12 Сен 2019 в 22:39

Оказалось, что в моем проекте Cordova (или аналогичном) это была проблема с плагином . Убедитесь, что вы не упустили ни одного плагина, и убедитесь, что он установлен правильно и без проблем.

Самый простой способ проверить это — просто начать все сначала, воссоздав проект Cordova (cordova create <path>) вместе с необходимыми платформами (cordova platform add <platform name>), и добавить каждый плагин с подробным флагом ( —verbose), чтобы вы могли видеть, если что-то пошло не так в журнале консоли, пока плагин загружается, добавляется в проект и устанавливается для каждой платформы (cordova plugin add cordova-plugin-device --verbose)

Резюме: cordova create <path> cordova platform add <platform name> cordova plugin add cordova-plugin-device --verbose


0

Vyrnach
1 Окт 2019 в 11:08

В моем случае я использовал сообщение о загрузке, для которого не требовалось содержимое тела:

// The `from: nil` induces error "cancelled" code -999
let task = session.uploadTask(with: urlRequest, from: nil, completionHandler: handler)

Исправление заключается в использовании данных с нулевым байтом вместо nil,

let task = session.uploadTask(with: urlRequest, from: Data(), completionHandler: handler)

В документации фреймворка не указано, почему from bodyData является необязательным типом или что происходит, когда он равен нулю.


0

dlalpine
11 Авг 2021 в 20:43

Мы решили эту проблему, перезагрузив веб-представление, когда оно не удалось загрузить.

extension WebViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        webView.reload()
    }
}


0

Edgardo Agno
21 Мар 2022 в 12:39

Я пытаюсь обновить приложение iPhone для работы с OS 3.0. У меня есть UIWebView, который показывает страницу в порядке. Но когда я нажимаю ссылку, он вызывает моего делегата для didFailLoadWithError, и ошибка-операция не может быть завершена. (NSURLErrorDomain, ошибка -999.) Я проверил, что это все еще работает с OS 2.2.1, поэтому в 3.0 что-то изменилось.

какие идеи?

3 ответов


я смог найти ответ здесь.

этот поток содержал это описание для этой ошибки:This error may occur if an another request is made before the previous request of WebView is completed...

Я работал вокруг этого, игнорируя эту ошибку и позволяя webview продолжать загружаться.

if ([error code] != NSURLErrorCancelled) {
//show error alert, etc.
}

NSURLErrorCancelled (-999)

» возвращается при отмене асинхронной нагрузки. Делегат web Kit framework получит эту ошибку при выполнении операции отмены для ресурса загрузки. Обратите внимание, что делегат NSURLConnection или nsurldownload не получит эту ошибку, если загрузка отменена.»

для моей ситуации (и, вероятно, вашей) Это можно игнорировать:

if([error code] == NSURLErrorCancelled) return; // Ignore this error

вышеуказанные два ответа были правильными>
Просто сделайте возврат, если запрос на загрузку вызывает отмену.

также хочу отметить, что люди не забудьте поставить NSLog внутри didFailLoadWithError метод, это может предотвратить потерю много времени, обнаружив проблему прямо на!

Итак, вот окончательное решение со всем, что я упомянул выше:

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"ERROR : %@",error); //Get informed of the error FIRST
    if([error code] == NSURLErrorCancelled) 
        return;
}

Понравилась статья? Поделить с друзьями:
  • Nsurlerrordomain ошибка 1005
  • Nsunsr ошибка при запуске 0xc0000906
  • Nsunsr exe системная ошибка
  • Nsunsr exe ошибка приложения 0xc0000906
  • Nsuns4 exe ошибка при запуске приложения 0xc0000142