究竟是怎么回事 DispatchTime.now() 
为什么我不能指定等待变量的时间?
我怎么能使用变量?
给出错误>>>
二进制运算符'+'不能应用于'DispatchTime'和'Float'类型的操作数
var time : Float = 2.2 // <---time 
@IBAction func buttonPressed(_ sender: Any) {
    let when = DispatchTime.now() + 2.2 // <---- THIS IS OKAY
    DispatchQueue.main.asyncAfter(deadline: when){
        print("Hello")
    }
    let whenWhen = DispatchTime.now() + time // <---- THIS IS NOT OKAY
    DispatchQueue.main.asyncAfter(deadline: whenWhen){
        print("Hello")
    }
}
Dha*_*esh 15
DispatchTime.now()是双重的.您不能将float和double值一起添加.(可以在这里找到关于为什么不能添加不同类型的值的小解释).
更换
var time: Float = 2.2
同
var time: Double = 2.2
它会工作正常.
您可以DispatchTimeInterval在中添加时间DispatchTime。
例如 :
let whenWhen = DispatchTime.now() + DispatchTimeInterval.milliseconds(time*1000)
DispatchQueue.main.asyncAfter(deadline: whenWhen){
    print("Hello")
}
错误消息几乎解释了这一点。您不能将 float 和 DispatchTime 添加在一起,因为它们是不同的数据类型。
当你使用这条线时:
let when = DispatchTime.now() + 2.2 // <---- THIS IS OKAY
您没有指定 2.2 是什么类型,系统会断定它是 DispatchTime 类型并允许它。
但是,当您使用这一行时:
let whenWhen = DispatchTime.now() + time // <---- THIS IS NOT OKAY
您已经确定时间是浮点数,这就是生成错误的地方。
像这样转换可能是最简单的:
DispatchTimeInterval.milliseconds(Int(time * 1000))
| 归档时间: | 
 | 
| 查看次数: | 5861 次 | 
| 最近记录: |