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


  无法将类型“ UInt64”的值转换为预期的参数类型“ DispatchTime”


这是代码:

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)
}


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

我该怎么做?

最佳答案

您应该:


DispatchTime.init(uptimeNanoseconds:)与您的when变量一起使用。
使用此命令:let when = (DispatchTime.now() + (5 * Double(x))),因为+(DispatchTime, Double)重载。

10-08 06:01