二进制运算符'+'不能应用于'DispatchTime'和'Int32'类型的操作数

时间:2017-09-25 14:06:04

标签: swift4

我正在尝试在Swift4中为计时器设置一个可变时间延迟,但是当我输入变量时我得到了错误:

Binary operator '+' cannot be applied to operands of type 'DispatchTime' and 'Int32'

我使用了代码:

let when = (DispatchTime.now() + (5 * x))

变量“x”是Int32

如果您知道如何解决问题,请提供帮助。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

let x: Int32 = 2
let when = (DispatchTime.now().uptimeNanoseconds + (5 * UInt64(x)))

问题是你不能总结不同的类型。 DispatchTime使用64位(无符号)表示,因此您可以使用UInt64(x)进行转换。

要从DispatchTime获取UInt64,您可以使用uptimeNanosecondsrawValue

答案 1 :(得分:1)

var dispatchAfter = DispatchTimeInterval.seconds(1)

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + dispatchAfter, execute: {
    // Do your thing
})