【发布时间】:2015-05-05 09:00:23
【问题描述】:
在我的课堂上我有这个代码:
这是下载 JSON 并检查每个元素内部是否有下载文件的 url 的方法,我可以在需要时停止“my_doc_r”
func requestDocuments(completion:(response:AnyObject)->()){
my_doc_r = request(.POST, "http://example.com/json/docs")
.responseJSON { (_, _, JSON, error) in
if error == nil{
var array = JSON as! NSArray
completion(response:array)
self.attachments_to_download = 0
for var i = 0; i < array.count; ++i{
if array.objectAtIndex(i).objectForKey("file_url") as! String != ""{
var url_file = array.objectAtIndex(i).objectForKey("file_url") as! String
self.downLoadFile(url_file)
}
}
}
else{
}
}
}
否则我这里有无限数量的“下载”请求,如果我需要全部停止?我能做些什么? 我和经理一起尝试过,但我没有得到好的结果。 如果我想停止所有下载,我该怎么办? 或者最好的解决方案是等待一个下载完成后再开始另一个?
func downLoadFile(url:String){
download(.GET, url, { (temporaryURL, response) in
if let directoryURL = NSFileManager.defaultManager()
.URLsForDirectory(.DocumentDirectory,
inDomains: .UserDomainMask)[0]
as? NSURL {
let pathComponent = response.suggestedFilename
var finalPath = NSURL()
finalPath = directoryURL.URLByAppendingPathComponent(pathComponent!)
//check same file with same name, delete and replace
if NSFileManager.defaultManager().fileExistsAtPath(finalPath.absoluteString!) {
NSFileManager.defaultManager().removeItemAtPath(finalPath.absoluteString!, error: nil)
}
return finalPath
}
return temporaryURL
})
}
【问题讨论】:
-
我很乐意提供帮助,但我不明白您的问题。您是否可以再通过一次并尝试澄清您要弄清楚的是什么?您是否想弄清楚如何取消正在运行的请求?
-
是的...您可以在我的代码中看到我在方法“downloadFile”中执行“下载”请求而没有指定已声明的下载请求...但是如果我想停止所有下载?
标签: ios request nsoperation nsoperationqueue alamofire