在 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
我正在尝试升级到最新 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