Из документации CMTimeGetSeconds
:
Если CMTime является недействительным или неопределенным, возвращается NaN.Если CMTime бесконечен, возвращается +/- бесконечность.
Когда CMTimeGetSeconds
возвращает NaN или бесконечность, приведение возвращаемого значения к Int
приведет к фатальной ошибке, которую вы видите.
Сначала вы можете проверить значение, а затем вернуть какое-то значение по умолчанию, если это неверное число.
func toDisplayString() -> String {
let rawSeconds = CMTimeGetSeconds(self)
guard !(rawSeconds.isNaN || rawSeconds.isInfinite) else {
return "--" // or some other default string
}
let totalSeconds = Int(rawSeconds)
let seconds = totalSeconds % 60
let minutes = totalSeconds / 60
let timeFormatString = String(format: "%02d:%02d", minutes, seconds)
return timeFormatString
}