Проблема в том, как обрабатываются дополнительные опции. Проблема здесь
let lts = HVMlts()!
, поскольку эта сила кода разворачивает возвращаемое значение, гарантируя, что HVMlts будет никогда не равным нулю.
Однако, если вы посмотрите на связанные функции, это может на самом деле return nil
.
if results.count == 1 {
return results[0]
} else {
return nil
}
Если фильтр Realm
let results = realm.objects(HomeViewModel.self)...
возвращает два или более результатов, эта функция вернет nil. Точно так же, если бы не было результатов, он также возвратил бы nil
В любом случае, если nil вызовет ваш код, взломать sh.
Лучше всего безопасно развернуть опции или предоставить значения по умолчанию, используя оператор слияния ноль. Я вижу, вы сделали это в других частях вашего кода, но здесь есть еще два варианта.
if let lts = HVMlts() then {
//do something with lts as it's not nil
}
или
guard let lts = HVMlts() else { return }
//do something with lts