【发布时间】:2019-11-07 01:09:14
【问题描述】:
我是一名 Android 开发人员,目前正在学习 Swift。你能帮我处理一下 OperationQueue 吗?
class ViewController: UIViewController {
var movieArray :[Movie] = []
override func viewDidLoad() {
super.viewDidLoad()
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
for index in 1...5
{
queue.addOperation {
self.process(value: index)
}
}
}
func process(value:Int)
{
print("Start for: \(value)")
let url = NSURL(string: URL_API+"\(value)")
//fetching the data from the url
URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary
{
if let resultArray = jsonObj.value(forKey: "results") as? NSArray
{
//Some Code...
}
print("Finish for: \(value)")
}
}).resume()
print("End for: \(value)")
}
}
我期望得到的是:
Start for: 1
Finish for: 1
End for: 1
Start for: 2
End for: 2
Finish for: 2
Start for: 3
Finish for: 3
End for: 3
Start for: 4
Finish for: 4
End for: 4
Start for: 5
Finish for: 5
End for: 5
我得到的是:
Start for: 1
End for: 1
Start for: 2
End for: 2
Start for: 3
End for: 3
Start for: 4
End for: 4
Start for: 5
End for: 5
Finish for: 1
Finish for: 5
Finish for: 3
Finish for: 4
Finish for: 2
它们不是连续的,我怎样才能使它们如此呢?
【问题讨论】:
-
您需要为您的特定操作子类化操作类,并覆盖主函数
标签: ios swift nsoperationqueue