Double值无法转换为Int64,因为它是无限或NaN

dan*_*anu 0 ios swift

我是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)

Don*_*Mag 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,你有答案.