我试图在 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)
存在+
过载。