我是swift的新手,我正在使用swift 3.0中的一个项目,我有一个UISlider可以拖动。一旦我拖动它,我得到以下崩溃说" Double值无法转换为Int64,因为它是无限的或NaN"。我的代码如下。我该如何克服这个错误?崩溃的线是"让seekTime = CMTime(值:Int64(val),时间刻度: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")
}
}
}
答案 0 :(得分:5)
尝试按照错误消息...
“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,你有答案。