我正在将旧的swift代码迁移到Swift 3.0,有时通过Swift 2.3。 在路上我做了一些错误的动作,导致不同版本混在一起。 那说我现在必须重新站起来,让事情奏效。
这里有一些代码:
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = DispatchQueue.global(Int(qualityOfServiceClass.rawValue), 0)
backgroundQueue.asynchronously(execute: {
self.getAppData()
self.waitingForAppData = false
self.busyWithAppDataAccess = false
})
这是我收到的一条错误消息,相对于上面的代码:
Cannot invoke 'global' with an argument list of type '(Int, Int)'
有谁知道这里的问题是什么?
答案 0 :(得分:4)
我无法找到您使用global
方法的匹配签名。我假设第二个Int
假设代表相对优先级。
由于global(priority:)
已被弃用。以下是更新Swift 3代码的方法:
let backgroundQueue = DispatchQueue.global(qos: .background)
backgroundQueue.async {
self.getAppData()
self.waitingForAppData = false
self.busyWithAppDataAccess = false
}
您也可以这样做以保持图片中的相对优先级。但是,使用Swift 3时它似乎不再相关。
let qos = DispatchQoS(qosClass: .background, relativePriority: 0)
let backgroundQueue = DispatchQueue.global(qos: qos.qosClass)
backgroundQueue.async {
self.getAppData()
self.waitingForAppData = false
self.busyWithAppDataAccess = false
}