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

时间:2017-06-01 12:48:51

标签: ios swift

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

1 个答案:

答案 0 :(得分:5)

尝试按照错误消息...

“Double值无法转换为Int64,因为它是无限的或NaN” - 你说它在let seekTime = CMTime(value: Int64(val), timescale: 1)行...

所以...因为该行正在使用Int64(val),所以很明显 是问题所在:val是无限的或为NaN。

所以... val设置为let val = Float64(sender.value) * totalsecstotalsecs由持续时间let totalsecs = CMTimeGetSeconds(duration)设置...

并且......你说duration是NaN。

找出为什么duration是NaN,你有答案。