[英]Fatal error: Float value cannot be converted to Int because it is either infinite or 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.