Поток 1: фатальная ошибка: остаток или деление на ноль

У меня проблема, когда я запускаю свой проект, я получаю сбой:

Поток 1: фатальная ошибка: остаток или деление на ноль)

Что это значит? И каково решение?

Это мой код:

let answer: String = data.ans // This variable called from SQLite database
answer.replacingOccurrences(of: " ", with: "") // Delete spaces between words


let lenghtOfChar = answer as NSString
// char count
let width: Int = Int(view.frame.size.width) - 40
// frame width
var targetWidth: Int = (width - (lenghtOfChar.length - 1) * 5) / lenghtOfChar.length //Here's the crash !!!!!!!!!

В чем проблема в моем коде?

1 ответ

Вам нужно остановить операцию, если длина равна 0

let lenghtOfChar = (answer as NSString).length
guard lenghtOfChar != 0 else { return }
let width: Int = Int(view.frame.size.width) - 40
var targetWidth: Int = (width - (lenghtOfChar- 1) * 5)/lenghtOfChar

В качестве альтернативы, вы можете просто установить ширину в 0, когда ваша длина равна 0. Ниже приведен пример, который делает это с помощью оператора Turnery:

let lenghtOfChar = answer as NSString
let width: Int = Int(view.frame.size.width) - 40
var targetWidth: Int = lenghtOfChar.length == 0 ? 0 : (width - (lenghtOfChar.length - 1) * 5)/lenghtOfChar.length
Другие вопросы по тегам