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")
}
}
答案 0 :(得分:7)
DispatchTime.now()
是双倍的。您不能将float和double值一起添加。 (可以找到关于为何无法添加不同类型值的小解释here)。
替换
var time: Float = 2.2
带
var time: Double = 2.2
它会正常工作。
答案 1 :(得分:4)
您可以DispatchTimeInterval
用户DispatchTime
添加时间。
例如:
let whenWhen = DispatchTime.now() + DispatchTimeInterval.milliseconds(time*1000)
DispatchQueue.main.asyncAfter(deadline: whenWhen){
print("Hello")
}
答案 2 :(得分:1)
错误消息几乎解释了它。您不能将float和DispatchTime一起添加,因为它们是不同的数据类型。
使用此行时:
Visits Visits2 Country channel date Visits3 spend Margin...
1 11206 14106 Argentina Total Likes 01-01-12 106 99 0.056
2 11652 14552 Argentina Total Likes 01-02-12 87 107 0.057
3 12004 14904 Argentina Total Likes 01-03-12 89 97 0.077
4 12497 15397 Argentina Total Likes 01-04-12 101 98 0.030
5 12701 15601 Argentina Total Likes 01-05-12 101 87 0.098
你没有指定2.2是什么类型,系统认为它是DispatchTime类型并允许它。
但是当你使用这一行时:
let when = DispatchTime.now() + 2.2 // <---- THIS IS OKAY
您已经确定时间是浮点数,而且是生成错误的地方。
这样转换可能最容易:
let whenWhen = DispatchTime.now() + time // <---- THIS IS NOT OKAY