簡體   English   中英

雙精度值不能轉換為Int64,因為它是無窮大或NaN

[英]Double value cannot be converted to Int64 because it is either infinite or NaN

我是swift的新手,我正在swift 3.0中的一個項目中拖動UISlider。 拖動它后,出現以下崩潰提示:“雙精度值不能轉換為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")
        }
    }
}

嘗試遵循錯誤消息...

“雙 let seekTime = CMTime(value: Int64(val), timescale: 1) 值不能轉換為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的方法,然后您就會得到答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM