Возможная проблема в том, что вы используете принудительное развертывание для необязательного значения.Попробуйте это
func updateSearchResults(for searchController: UISearchController) {
if let textToSearch = searchController.searchBar.text, textToSearch.isEmpty == false {
// update search results
} else {
// clear search results
}
}
При таком подходе вы можете быть уверены, что textToSearch
не nil
и не пустой.
ОБНОВЛЕНИЕ
В этой строке есть еще одно принудительное развертывание
filteredData = feedItems.filter {
($0.DesenNo?.lowercased().contains(textToSearch.lowercased()))!
}
Возможно, ваши сущности не имеют свойства DesenNo
.Если они этого не сделают, то принудительное развертывание приведет к падению.Отфильтруйте ваш массив следующим образом
let lowercasedSearchline = textToSearch.lowercased()
filteredData = feedItems.filter {
// Do not include items with empty DesenNo field
guard let desenNo = $0.DesenNo else { return false }
// filter items that has that field filled
return desenNo.lowercased().contains(lowercasedSearchline)
}