我是 swift 的新手,我正在使用 swift 3.0 开发一个项目,其中我有一个要拖动的 UISlider。一旦我拖动它,我就会收到以下崩溃消息:“Double 值无法转换为 Int64,因为它要么是无限的,要么是 NaN”。我的代码如下。我将如何克服这个错误??。崩溃的行是“let seekTime = CMTime(value: Int64(val), timescale: 1)”...
@IBAction func sliderValueChanged(_ sender: UISlider) {
if let duration = player?.currentItem?.duration {
let totalsecs = CMTimeGetSeconds(duration)
print("Durtion :",totalsecs)
let val = Float64(sender.value) * totalsecs
let totalduration = CMTimeGetSeconds(duration) as Float64
if(val != totalduration){
let seekTime = CMTime(value: Int64(val), timescale: 1)
player?.seek(to: seekTime, completionHandler: { (completedSeek) in
})
}else{
print("Slider dragged error")
}
}
}
最佳答案
尝试按照错误信息...
“ double 值无法转换为 Int64,因为它要么是无限的要么是 NaN” - 你说它在 let seekTime = CMTime(value: Int64(val), timescale: 1)
行...
所以...因为该行正在使用 Int64(val)
很明显 就是问题所在: val
为无穷大或 NaN。
所以... val
被设置为 let val = Float64(sender.value) * totalsecs
,并且 totalsecs
被设置为持续时间 let totalsecs = CMTimeGetSeconds(duration)
...
然后...你说 duration
是 NaN。
找出为什么 duration
是 NaN,你就有了答案。
关于ios - Double 值无法转换为 Int64,因为它是无限的或 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44308016/