无法调用全球'使用类型'(Int,Int)'的参数列表

时间:2016-12-14 02:29:30

标签: migration swift3

我正在将旧的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)'

有谁知道这里的问题是什么?

1 个答案:

答案 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
}