2017-06-27 31 views
1

我得到'类型的表达是不明确的没有更多的上下文'对这个部分从项目的代码我想升级到最新的Swift版本。我似乎无法弄清楚。我尝试过不同的事情,但无法实现。表达式的类型是不明确的没有更多的上下文在Swift3

的问题是在该行的语法:

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

编译器指出

DsipatchTime.now()

到的添加(+)

.seco NDS(秒)

回答

3

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 
0

改变线

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

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

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

相关问题