Pertanyaan Swift 3: error fatal: Nilai ganda tidak dapat dikonversi menjadi Int karena itu tidak terbatas atau NaN


Ketika saya memanggil metode ini, kesalahan diterima. Bagaimana menangani NaN atau nilai tak terbatas selama menetapkan jam, menit atau detik?

Ini kode saya:

private func secondsToFormattedString(totalSeconds: Float64) -> String{
    let hours:Int = Int(totalSeconds.truncatingRemainder(dividingBy: 86400) / 3600)

    let minutes:Int = Int(totalSeconds.truncatingRemainder(dividingBy: 3600) / 60)
    let seconds:Int = Int(totalSeconds.truncatingRemainder(dividingBy: 60))

    if hours > 0 {
        return String(format: "%i:%02i:%02i", hours, minutes, seconds)
    } else {
        return String(format: "%02i:%02i", minutes, seconds)
    }
}

5
2018-02-02 10:43


asal


Jawaban:


Anda harus memeriksa apakah totalSeconds adalah nilai yang valid, seperti:

guard !(totalsSeconds.isNaN || totalSeconds.isInfinite) else {
    return "illegal value" // or do some error handling
}

Dan periksa ini: Ubah Float menjadi Int di Swift


14
2018-02-02 10:53