当我尝试播放视频时,出现以下异常。
*** Assertion failure in -[CustomSlider _setValue:minValue:maxValue:andSendAction:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore/UIKit-3698.119.2/UISlider.m:1477
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to set a slider's minimumValue (0.000000) to be larger than the maximumValue (nan)'
libc++abi.dylib: terminating with uncaught exception of type NSException
这是我的代码:
这段代码在 iOS 13 设备上运行时运行良好,但在 iOS 12.3.1 设备上运行时崩溃。
SDK:iOS 13
工具:XCode 11.3.1
目标设备:运行 iOS 12.3.1 的 iPhone 6S Plus
func updateUIforPlayerItemStatus() {
guard let currentItem = player.currentItem else { return }
switch currentItem.status {
case .readyToPlay:
playPauseButton.isEnabled = true
guard player.currentItem!.duration >= CMTime.zero else {
return
}
let newDurationSeconds = Float(currentItem.duration.seconds)
let currentTime = Float(player.currentTime().seconds)
timeSlider.minimumValue = 0.0
timeSlider.maximumValue = newDurationSeconds
timeSlider.value = currentTime
timeSlider.isEnabled = true
durationLabel.isEnabled = true
durationLabel.text = createTimeString(time: newDurationSeconds)
player.playImmediately(atRate: playbackRate)
default:
playPauseButton.isEnabled = false
timeSlider.isEnabled = false
durationLabel.isEnabled = false
}
}
最佳答案
错误消息说 maximumValue
是 NaN(不是数字),这意味着 newDurationSeconds
不是数字,这意味着 currentItem.duration。 seconds
不是数字。在使用之前检查以确保它不是 NaN,如下所示:
[...]
guard currentItem.duration >= .zero, !currentItem.duration.seconds.isNaN else {
return
}
let newDurationSeconds = Float(currentItem.duration.seconds)
[...]
关于ios - 尝试将 maximumValue 设置为 UISlider 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61183080/