Я добавил UISearchBar
к своему ViewController
, и в нем также есть UITableView
, который "подпитывается" данными из базы данных SQLite с использованием SQLite.Swift.
Поиск работает, все результаты отображаются корректно при поиске. Вызов DetailView нажатием TableViewCell
также работает нормально, но когда я нажимаю ячейку во время активного поиска, приложение аварийно завершает работу.
Странная вещь: в симуляторе все работает без сбоев, но не на моем физическом устройстве. Я использую последние бета-версии XCode 9 и XCode 9 и запускаю приложение в iOS 11.3 или 11.4.
Я пробовал несколько вещей, но я просто не могу понять, что вызывает сбой. Я вставляю весь ViewController
. Я отметил разделы, где используется код, взятый из добавленных фреймворков/расширений.
Ошибка гласит:
"Поток 1: неустранимая ошибка: неожиданно найдено nil при развертывании необязательного значения."
Это раздел, на который указывает ошибка в SQLite.swift
:
func value<A: Value>(_ v: Binding?) -> A {
return value(v!)
}
Мне интересно, где это значение nil
.
Вот мой код: спасибо за подсказки и помощь
EDIT: я отредактировал код, потому что ошибка возникла не в ViewController
активного окна, а в DetailViewController
, которое должно отображаться после нажатия на TableViewCell
. Это строка, в которой возникает ошибка:
Этот код должен найти строку в базе данных, где имя и дата соответствуют заданным переменным, чтобы выбрать имя в этой строке:
let nameOfBank = try! database.scalar(table.filter(tableColumnName == cell?.textLabel?.text && tableColumnDate == cell?.detailTextLabel?.text).select(bankName))
?
в параметре, либо правильно обработайте нулевое значение дляv
. - person rmaddy   schedule 12.05.2018filteredDates
при изменении текста поиска. Возможно, вы захотите создать структуруbankInfo
, содержащую имя и дату; и заполните банки массивом экземпляров этого. Тогда ваша фильтрация будет проще, имея только один массив для фильтрации для создания filteredBanks, вместо того, чтобы пытаться синхронизировать два массива (filteredBanks и filteredDates). - person Graham Perks   schedule 12.05.2018func value<A: Value>(_ v: Binding?) -> A { return value(v!) }
, где, как вы сказали, ошибка. - person rmaddy   schedule 12.05.2018SQLite.Swift
. Когда я что-то меняю, я теряюсь в ошибках :D Я постараюсь изменить это сегодня вечером. Первые попытки не увенчались успехом. Спасибо за разъяснение. - person Aeger   schedule 12.05.2018ViewController
! Он находится вDetailView
и происходит при развертывании отдельных элементов в базе данных SQLite. Теперь мне нужно выяснить, как установить для них правильныеquery
/filter
/scalar
. Все эти строчки пишутся так:let result = try! database.scalar(history.filter(bankName == segueBankName && dateSave == segueBankDate).select(questionsResult))
Прикол: у меня точно такой жеscalar
в другом приложении и там работает. Единственное отличие: здесь я расширил фильтр, добавив&&
Надо проверить - person Aeger   schedule 13.05.2018