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

标签 ios swift

我是 swift 的新手,我正在使用 swift 3.0 开发一个项目,其中我有一个要拖动的 UISlider。一旦我拖动它,我就会收到以下崩溃消息:“Double 值无法转换为 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")
        }
    }
}

最佳答案

尝试按照错误信息...

“ 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,你就有了答案。

关于ios - Double 值无法转换为 Int64,因为它是无限的或 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44308016/

相关文章:

javascript - 如何将 json 从 JavaScript 传递到 iPad native 应用程序?

ios - 带有突出显示图像的自定义 UITableViewCell

ios - 滑动删除动画杀死线程

ios - 代码只能在 DispatchQueue.main.async block 中工作,为什么?

ios - 在 SWIFT 中访问 NSMutableArray 元素

android - 我用 cordova 开发了一个 android 应用程序,我也想将它转换为 iOS

ios - Swift 4 音频与 Whatsapp 分享

swift - 如何调用 xcassets 中的图像?

ios - TableView 不附加 TableView 单元格

ios - 将 View 动画化到 collectionView 中的选定单元格或 scrollView 中的 tableView