iOS Alamofire detiene todas las requestes

¿Hay alguna manera que pueda decir, por ejemplo:

Alamofire.Manager.cancelAllRequests() o Alamofire.Manager.shanetworkingInstance.cancelAllRequests() ?

Por supuesto, sería genial que estas requestes, especialmente en caso de descarga de imágenes, solo se pausaran para más adelante cuando califique la misma URL pero … necesito al less poder cancelar todas las requestes a nivel global. Algunas sugerencias ?

En mi aplicación, tengo un contenedor por encima de la forma de hacer Alamofire.request (.Post ….), por lo que realmente me gustaría no crear o interactuar con la class Manager de otra manera además de lo especificado anteriormente.

Debe usar los methods NSURLSession directamente para lograr esto.

 Alamofire.Manager.shanetworkingInstance.session.invalidateAndCancel() 

Esto llamará a todos los manejadores de finalización con errores de cancelación. Si necesita poder reanudar las descargas, deberá tomar el resumeData de la request si está disponible. Luego, use los datos del curriculum vitae para reanudar la request en su lugar cuando esté listo.

cnoon de una sola línea de cnoon es genial, pero invalida la NSURLSession y necesita crear una nueva.

Otra solución sería esto (iOS 7+):

 session.getTasks { dataTasks, uploadTasks, downloadTasks in dataTasks.forEach { $0.cancel() } uploadTasks.forEach { $0.cancel() } downloadTasks.forEach { $0.cancel() } } 

O si te orientas solo a iOS 9+:

 session.getAllTasks { tasks in tasks.forEach { $0.cancel() } } 

Si ayuda, obtuve la respuesta de cnoon para trabajar en mi propia instancia de un Alamofire.Manager . Tengo una class singleton llamada NetworkHelper que tiene una propiedad llamada alamoFireManager, que maneja todas mis requestes de networking. Acabo de llamar a la NSURSession invalidateAndCancel() en esa propiedad alamoFireManager , reinicio mi administrador en setAFconfig() , entonces estoy listo para ir.

 class NetworkHelper { private var alamoFireManager : Alamofire.Manager! class var shanetworkingInstance: NetworkHelper { struct Static { static var instance: NetworkHelper? static var token: dispatch_once_t = 0 } dispatch_once(&Static.token) { Static.instance = NetworkHelper() } return Static.instance! } init(){ setAFconfig() } func setAFconfig(){ let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() configuration.timeoutIntervalForResource = 4 configuration.timeoutIntervalForRequest = 4 alamoFireManager = Alamofire.Manager(configuration: configuration) } func cancelAllRequests() { print("cancelling NetworkHelper requests") alamoFireManager.session.invalidateAndCancel() setAFconfig() } 

En Swift 2.2

 let session = Alamofire.Manager.shanetworkingInstance.session session.getAllTasksWithCompletionHandler() { tasks in tasks.forEach { $0.cancel() } } 

al completar el @ Loïs Di Qual puede verificar la URL de request y cancelar (suspender, reanudar) la request que necesita:

 downloadTasks.forEach { if ($0.originalRequest?.url?.absoluteString == url) { $0.cancel() } }