3
所有的任务,我想实现NSOperationQueue完成在迅速3.所有任务操作创建一个下面的演示代码,它是根据我的意料工作。NSOperationQueue完成SWIFT 3
func downloadTopStroiesDetails(){
let operationQueue: OperationQueue = OperationQueue()
let operation1 = BlockOperation() {
print("BlockOperation1")
for id in 0...5{
operationQueue.addOperation(downloadArticle(index: id))
}
let operation2 = BlockOperation() {
print("BlockOperation2")
}
operationQueue.addOperation(operation2)
}
operationQueue.addOperation(operation1)
}
func downloadArticle(index:Int) -> Operation {
let operation: Operation = BlockOperation {() -> Void in
print(index)
}
return operation
}
downloadTopStroiesDetails() // start calling
输出:
BlockOperation1
0
1
2
3
4
5
BlockOperation2
但是,当我打电话与Alamofire一个Web API中downloadArticle方法的输出是不同的。
func downloadArticle(index:Int) -> Operation {
let operation = BlockOperation(block: {
RequestManager.networkManager.fetchFromNetworkwithID(articleid: index) { (response:Any ,sucess:Bool) in
if sucess{
print(index)
//let art = article.init(json:(response as? json)!)!
// self.saveDataIntoCoreData(data: art)
//self.all_TopArticle.append(art)
}
};
})
return operation
}
现在输出:
BlockOperation1
BlockOperation2
0
1
2
3
4
5
什么,我做错了什么?
你没有做错任何事情。输出预计用于并发操作队列。 – rmaddy