错误:无法将 'UInt64' 类型的值转换为预期的参数类型 'DispatchTime'



我试图在 Swift4 中创建一个由变量控制的计时器,唯一的问题是我收到一个错误:

无法将类型为"UInt64"的值转换为预期的参数类型"调度时间">

这是代码:

let maxNumber = maxNumberField.intValue
let amountOfNumbers = amountOfNumbersField.intValue
var delay = 5
var x: Int32 = amountOfNumbers
while(x > 0){
let when = (DispatchTime.now().uptimeNanoseconds + (5 * UInt64(x)))
DispatchQueue.main.asyncAfter(deadline: when) { // error
let number = arc4random_uniform(UInt32(maxNumber + 1))
let synth = NSSpeechSynthesizer()
synth.startSpeaking(String(number))
}
x = (x - 1)
}

根据我的理解,我需要将when变量(UInt64转换为DispatchTime

我该怎么做?

您应该:

  • 将 DispatchTime.init(uptimeNanoseconds:) 与when变量一起使用。

  • 使用这个:let when = (DispatchTime.now() + (5 * Double(x))),因为(DispatchTime, Double)存在+过载。

最新更新