我试图将randomAmountOfTime
添加到DispatchTime.now()
,但它给了我一个错误。
错误:
二元运算符' +'不能应用于类型' DispatchTime'的操作数。和' Int'
这就是我的所作所为:
var randomAmountOfTime = Int(arc4random_uniform(5))
let when = DispatchTime.now() + randomAmountOfTime
答案 0 :(得分:0)
Dispatch Time是浮点数,因此您必须传递@rmaddy提供的Double type或DispatchTime。 Swift无法将Int和DispatchTime加在一起(因为DispatchTime中没有提供运算符,您可以创建自定义扩展)。 Float和DispatchTime也是如此 - 由于某种原因,私有API中没有这些方法。
这应该做:
var randomAmountOfTime = Double(arc4random_uniform(5))
let when = DispatchTime.now() + randomAmountOfTime
为了进一步了解,您可以here
编辑:
您可以创建自定义文件(如DispatchTime + Int.swift)并创建自定义运算符以将Int和DispatchTime一起添加:
public func + (left: Int, right: DispatchTime) -> DispatchTime {
return Double(left) + right
}
答案 1 :(得分:0)
假设您的randomAmountOfTime
为秒,则可以使用DispatchTimeInterval.seconds
。
var randomAmountOfTime = Int(arc4random_uniform(5))
let when = DispatchTime.now() + DispatchTimeInterval.seconds(randomAmountOfTime)