我有NSMutableDictionary
我要下载的数组列表。我正在使用cellForRowAtIndexPath
下载每个。但是,当cellForRowAtIndexPath
运行时,并行下载所有zip文件,导致应用程序挂起,UI冻结,CPU用于通过屋顶。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:updateAllCell = tableView.dequeueReusableCellWithIdentifier("updateAllCell") as! updateAllCell!
let row = self.bookArray.objectAtIndex(indexPath.row) as! NSMutableDictionary
self.updateBookList(row, progressView: cell.downloadProgressView, labelView: cell.lblDownloadPercent)
}
func updateBookList(bookData: NSMutableDictionary, progressView: UIProgressView, labelView: UILabel) {
let source = Utility().getContentsDirectory().stringByAppendingString("/\(fileName).zip")
Alamofire.download(.GET, source, destination: destination)
.progress { bytesRead, totalBytesRead, totalBytesExpectedToRead in
println(totalBytesRead) // update progressView and labelView
}
.response { request, response, _, error in
println(response)
}
}
他们可以按顺序逐个下载吗?感谢。
答案 0 :(得分:0)
您面临的问题是,一旦表格请求相关单元格,就会立即进行下载调用,因为Alamofire会异步执行所有操作(如果没有,您将等待文件在您之前下载甚至会看到细胞)。
您要做的是实现一个堆栈,该堆栈将对您的请求进行排队,并在上一个请求完成后立即弹出下一个请求。