【问题标题】:Error: Cannot convert value of type 'UInt64' to expected argument type 'DispatchTime'错误:无法将“UInt64”类型的值转换为预期的参数类型“DispatchTime”
【发布时间】:2017-09-26 00:34:06
【问题描述】:

我试图在 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

我该怎么做?

【问题讨论】:

    标签: swift swift4


    【解决方案1】:

    您应该:

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

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

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 2023-04-04
      • 2016-05-03
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多