我试图在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)
}
根据我的理解,我需要将
when
的UInt64
变量转换为DispatchTime
。我该怎么做?
最佳答案
您应该:
将DispatchTime.init(uptimeNanoseconds:)与您的when
变量一起使用。
使用此命令:let when = (DispatchTime.now() + (5 * Double(x)))
,因为+
有(DispatchTime, Double)
重载。