2013-12-17 2 views
4

Есть ли способ отменить AFHTTPRequestOperation? Я использую его для загрузки PLIST. Поэтому у меня была кнопка, чтобы отменить загрузку или задачу. Есть ли способ?AFHTTPRequestOperation Отменить запрос

Update:

operationQueue = [NSOperationQueue new]; 

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:myURL] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0]; 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
operation.responseSerializer = [AFPropertyListResponseSerializer serializer]; 
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id propertyList) { 

    NSLog(@"DONE");   

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

    NSLog(@"%@", error); 

} 
]; 

[operationQueue addOperation:operation]; 

Так я поставил "операцию" к "operationQueue" и может остановить работу с:

[operationQueue cancelAllOperations]; 

Это только одна операция в очереди. Есть ли способ прекратить операцию явным, если их несколько? Я предполагаю, что следующая ошибка в консоли - это нормально, если очередь отменяется?

Ошибка домена = NSURLErrorDomain Code = -999 «Операция не может быть завершена

ответ

11

Вы можете использовать:.

[operation cancel]; 

Это метод NSOperation, который реализуется AFNetworking.

+0

Как это можно назвать другим (void), потому что операция известна только в этой функции, где вызывается соединение. – halloway4b

+0

У вас есть несколько вариантов. Например, вы можете сохранить 'operation' как слабый @property, или вы можете добавить его в NSOperationQueue вместо того, чтобы называть его« start », а затем найти его позже из той же очереди. Вот хороший обзор NSOperation: http://nshipster.com/nsoperation/ –

+0

Спасибо за подсказку с NSOperation. Обновил мой код выше. Я думаю, что если операция отменена, ошибка в журнале консоли нормальная? – halloway4b

0

Вы можете использовать это, чтобы отменить все операции:

[[httpClient operationQueue] cancelAllOperations]; 
+0

Что такое httpClient? Для меня это необъявленный идентификатор. Спасибо – halloway4b

+0

'httpClient' является экземпляром' AFHTTPClient', который вы использовали для создания соединения. Во всяком случае, я только понял, что ответ Аарона работает лучше для вас. –

Смежные вопросы