【问题标题】:Delay using DispatchTime.now() + float?使用 DispatchTime.now() + float 延迟?
【发布时间】:2017-12-29 10:41:28
【问题描述】:

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

【问题讨论】:

    标签: swift


    【解决方案1】:

    DispatchTime.now() 是双精度。您不能将浮点数和双精度值加在一起。 (关于为什么不能添加不同类型的值的小解释可以找到here)。

    替换

    var time: Float = 2.2
    

    与

    var time: Double = 2.2
    

    它会正常工作的。

    【讨论】:

    • 该死的干净
    • 您不需要Double。只需这样做:let time = 2.2 和 time 默认为 Double。
    • 嘿 dharmesh 你能帮帮我吗?
    • @RB1509 是的,有什么可以帮忙的吗?
    • 有一个视频在视图中,它实际上是乐蒂动画,它工作得很好,但是我要录制这个视图,它会延迟录制(lang)。
    【解决方案2】:

    您可以使用DispatchTimeInterval 在DispatchTime 中添加时间。

    例如:

    let whenWhen = DispatchTime.now() + DispatchTimeInterval.seconds(time)
    DispatchQueue.main.asyncAfter(deadline: whenWhen){
    
        print("Hello")
    
    }
    

    【讨论】:

    • 我们gooooo 谢谢JayeshThanki
    • 让 whenWhen = DispatchTime.now() + DispatchTimeInterval.milliseconds(Int(time*1000)) DispatchQueue.main.asyncAfter(deadline: whenWhen){ print("Hello") }
    【解决方案3】:

    错误消息几乎解释了它。您不能将浮点数和 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))
    

    【讨论】:

    • 如何使用变量?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多