Alamofire:如何在UITableView中按顺序下载zip文件

时间:2016-10-24 10:06:03

标签: ios swift uitableview alamofire

我有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)
     }
}

他们可以按顺序逐个下载吗?感谢。

1 个答案:

答案 0 :(得分:0)

您面临的问题是,一旦表格请求相关单元格,就会立即进行下载调用,因为Alamofire会异步执行所有操作(如果没有,您将等待文件在您之前下载甚至会看到细胞)。

您要做的是实现一个堆栈,该堆栈将对您的请求进行排队,并在上一个请求完成后立即弹出下一个请求。