【发布时间】:2016-07-21 05:27:59
【问题描述】:
我想在下载后按顺序添加数组中的图像。我在一张一张下载后将图像附加到数组中,但它们不是按顺序排列的。谁能告诉我什么是最好的方法来做到这一点。
var queue: NSOperationQueue = {
let _queue = NSOperationQueue()
_queue.maxConcurrentOperationCount = 4
return _queue
}()
var imageArrayNsData : [NSData] = []
let session = NSURLSession.sharedSession()
@IBAction func didClickOnStart(sender: AnyObject) {
queue.cancelAllOperations()
let completionOperation = NSBlockOperation() {
print("all done")
}
for (index, imageURL) in imageURLs.enumerate() {
let operation = ImageNetworkOperation(session: session, urlString: imageURL) { image, response, error in
let dtA : NSData = NSData(data: UIImageJPEGRepresentation(image!, 0.75)!)
self.imageArrayNsData.append(dtA)
print("JPEG download\(index)")
}
completionOperation.addDependency(operation)
queue.addOperation(operation)
}
NSOperationQueue.mainQueue().addOperation(completionOperation)
}
结果输出:
JPEG 下载0
JPEG 下载2
JPEG 下载1
JPEG 下载3
全部搞定
【问题讨论】:
-
请澄清您所说的“按顺序”是什么意思。
-
您可以选择GCD,它非常易于使用,并且具有串行队列、并发队列等功能。这是相同的教程 - raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1.
-
我的意思是按顺序排列,因为 url 在数组中。例如 10 个 url 的图像在数组中。图像需要保存在与其网址相同的索引号中,保存在特定索引处。但是由于异步图像是随机下载的。不按顺序。我需要按顺序保存所有图像,因为我需要将它们与标题一起使用。我正在下载这些图像。
http://www.wcvb.com/9849860?format=rss_2.0&view=feed -
在不了解很多 GDC 内容的情况下,最简单的方法是在下载
UIImage之后,在具有 imageURL 索引的对象中创建它,然后在之后随机附加将sort与索引一起使用,那么你得到了相同的顺序:) -
感谢 Tj3n。我已经尝试这样做了。
标签: ios swift swift2 nsurlsession nsoperationqueue