在 Swift3 中没有更多上下文的表达式类型不明确

Type of expression is ambiguous without more context in Swift3

我正在尝试升级到最新 Swift 版本的项目的这部分代码中得到 'Type of expression is ambiguous without more context '。我似乎无法弄清楚。我尝试了不同的方法,但无法正常工作。

问题出在这一行的语法上:

var sec = Int64(0.001 * Double(NSEC_PER_SEC))
let time = DispatchTime.now() + .seconds(sec) <---- Error here   
DispatchQueue.main.asyncAfter(deadline: time)

编译器指出

的加法(+)

DsipatchTime.now()

.seconds(sec)

换行

var sec = Int64(0.001 * Double(NSEC_PER_SEC))

var sec = Int(0.001 * Double(NSEC_PER_SEC))

这是必需的,因为 DispatchTimeInterval 需要一个 Int

DispatchTimeInterval 有一个 case .seconds(Int),所以你不能 从 Int64.

创建它

还有Int64(0.001 * Double(NSEC_PER_SEC))1000000,这可能是 而不是 以秒为单位的时间 您想等待(大约需要 277 小时)。

您可以创建小数秒的调度时间间隔 使用 .milli/micro/nanoseconds 个案例,例如:

let milliseconds = 1
let time = DispatchTime.now() + .milliseconds(milliseconds)

或者只需添加一个 Double 以秒为单位指定数量:

let sec = 0.001
let time = DispatchTime.now() + sec