我是swift的新手,我正在使用swift 3.0中的一个项目,我有一个UISlider可以拖动.一旦我拖动它,我得到以下崩溃说"双值不能转换为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")
}
}
}
Run Code Online (Sandbox Code Playgroud)
尝试按照错误消息...
"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,你有答案.
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |