例如,我有什么办法可以说:
Alamofire.Manager.cancelAllRequests()
或Alamofire.Manager.sharedInstance.cancelAllRequests()
当然,如果这些请求(特别是在图像下载的情况下)只在稍后我使用相同的URL时才会暂停,那就太好了,但是.我至少需要能够在全球范围内取消所有的请求。有什么建议?
在我的应用程序中,Alamofire.request(.Post.)上方有一个包装器。做事情的方式,所以我真的很感激不让我用另外一种方式创建或者与Manager类交互,而不是上面指定的方式。
发布于 2015-10-09 08:12:00
您应该直接使用NSURLSession
方法来完成这一任务。
Alamofire.SessionManager.default.session.invalidateAndCancel()
这将调用所有带有取消错误的完成处理程序。如果需要恢复下载,则需要从请求中获取resumeData
(如果可用的话)。然后使用简历数据在准备就绪时恢复请求。
发布于 2016-01-05 12:00:20
cnoon
的一条龙解决方案很棒,但它使NSURLSession失效,您需要创建一个新的解决方案。
另一个解决方案是这个(iOS 7+):
session.getTasks { dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach { $0.cancel() }
uploadTasks.forEach { $0.cancel() }
downloadTasks.forEach { $0.cancel() }
}
或者,如果您只针对iOS 9+:
session.getAllTasks { tasks in
tasks.forEach { $0.cancel() }
}
发布于 2017-11-16 02:27:17
以下代码将停止Swift 3中的请求:
此外,代码还适用于Alamofire v3 & v4 + iOS 8+。
func stopTheDamnRequests(){
if #available(iOS 9.0, *) {
Alamofire.SessionManager.default.session.getAllTasks { (tasks) in
tasks.forEach{ $0.cancel() }
}
} else {
Alamofire.SessionManager.default.session.getTasksWithCompletionHandler { (sessionDataTask, uploadData, downloadData) in
sessionDataTask.forEach { $0.cancel() }
uploadData.forEach { $0.cancel() }
downloadData.forEach { $0.cancel() }
}
}
}
只需复制和粘贴函数。
https://stackoverflow.com/questions/32999892
复制