2014-10-10 2 views
18

Я загружаю файл с использованием загрузки Alamofire с прогрессом, но я понятия не имею, как приостановить/возобновить/отменить конкретный запрос.Как приостановить/возобновить/отменить мой запрос на загрузку в Alamofire

@IBAction func downloadBtnTapped() { 

Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination) 
    .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in 
     println(totalBytesRead) 
    } 
    .response { (request, response, _, error) in 
     println(response) 
    } 
} 


@IBAction func pauseBtnTapped(sender : UIButton) {   
    // i would like to pause/cancel my download request here 
} 

ответ

29

Держите ссылку на запрос, созданный в downloadBtnTapped со свойством, и называть cancel по этому свойству в pauseBtnTapped.

var request: Alamofire.Request? 

@IBAction func downloadBtnTapped() { 
self.request = Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination) 
} 

@IBAction func pauseBtnTapped(sender : UIButton) { 
    self.request?.cancel() 
} 
+0

Отменяет ли это все запросы? –

+2

'request.cancel()' не гарантирует немедленное отмена запроса. Это приводит к тому, что блок выполнения вызывается после отмены. Есть ли встроенный способ проверить, вызвано ли отмену/приостановление? – osrl

+0

Pausing - запрос? .suspend() ИЛИ запрос ?. Отмена() ? – Steve

16

request.cancel() аннулирует ход загрузки. Если вы хотите сделать паузу и продолжить, вы можете использовать:

var request: Alamofire.Request? 

@IBAction func downloadBtnTapped() { 
self.request = Alamofire.download(.GET, "http://yourdownloadlink.com", destination: destination) 
} 

@IBAction func pauseBtnTapped(sender : UIButton) { 
    self.request?.suspend() 
} 

@IBAction func continueBtnTapped(sender : UIButton) { 
    self.request?.resume() 
} 

@IBAction func cancelBtnTapped(sender : UIButton) { 
    self.request?.cancel() 
} 
+0

В чем разница приостановки и отмены? приостанавливается больше похоже на паузу? –