【发布时间】:2015-06-17 03:50:36
【问题描述】:
我使用的是 NSURLSession,根据这个线程是首选的。 How to make an HTTP request in Swift?
let url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
我唯一的问题是当用户点击两次并且我想取消第一个请求时。我已经尝试过 task.cancel() 但打印语句仍在执行(即在带有 NSDomainError 的 .cancel() 之后)。如何在不触发打印语句的情况下安全地取消此请求(NSURLSessionDataTask),或者甚至有可能?
编辑: 只是要清楚。 URL 可能相同,我想取消第一个请求。
【问题讨论】:
-
print 语句或
NSDomainError是否指定任务已取消?如果是这样,只需打开它并忽略该错误,因为您期待它。 -
@LoVo 不,那是一个不同的问题(他在寻找任务时遇到了问题),我还询问了如何快速做到这一点。
-
@keithbhunter 我现在正在研究这个,似乎它可以用一种丑陋的方式解决。
-
但是答案是正确的,把你的任务放在一个数组中,如果你想取消其中一个,检查状态。代码可能在 obj-c 中,但它应该很容易迁移。
标签: ios swift nsurlsession