有什么办法可以说:
Alamofire.Manager.cancelAllRequests()还是Alamofire.Manager.sharedInstance.cancelAllRequests()?
当然,如果这些请求(特别是在图像下载的情况下)只会暂停,以便稍后我将使用相同的URL但是......我至少能够在全局级别取消所有请求,这将是很好的.一些建议?
在我的应用程序中,我有一个包装器,高于Alamofire.request(.Post ....)的处理方式,所以我真的很感激,除了上面指定的方式之外,我不会让我以另一种方式创建或与Manager类交互.
ldi*_*ual 63
cnoon单线解决方案很棒,但它使NSURLSession无效,你需要创建一个新的解决方案.
另一个解决方案是这个(iOS 7+):
session.getTasks { dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach { $0.cancel() }
uploadTasks.forEach { $0.cancel() }
downloadTasks.forEach { $0.cancel() }
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您仅定位iOS 9+:
session.getAllTasks { tasks in
tasks.forEach { $0.cancel() }
}
Run Code Online (Sandbox Code Playgroud)
cno*_*oon 17
您应该NSURLSession直接使用这些方法来完成此任务.
Alamofire.Manager.sharedInstance.session.invalidateAndCancel()
Run Code Online (Sandbox Code Playgroud)
这将调用所有完成处理程序,并具有取消错误.如果您需要能够恢复下载,那么您需要resumeData从请求中获取它(如果可用).然后在准备好后使用恢复数据恢复请求.
Yas*_*edi 10
下面的代码停止了[Swift 3]中的请求:
此外,该代码适用于iOS 8+的Alamofire v3和v4 plus .
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() }
}
}
}
Run Code Online (Sandbox Code Playgroud)
只需复制并粘贴该功能即可.
| 归档时间: |
|
| 查看次数: |
17680 次 |
| 最近记录: |