Я реализовал код для searchBar
, и он работает, если я ищу имя или фамилию человека. Например, если я хочу найти Кейт Белл, поиск работает, если я пишу «Кейт», и он работает, если я пишу «Белл». Но если я напишу «Кейт Б», результат поиска исчезнет.
Вот мой код:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.count == 0 {
isFiltered = false
tableViewOutlet.reloadData()
}else {
isFiltered = true
searchInternalArray = contactsInternalArray.filter({ object -> Bool in
guard let text = searchBar.text else {return false}
return object.firstName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)) || object.lastName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines))
})
searchArrayGroups = sectionsArrayGroups.filter({ object -> Bool in
guard let text = searchBar.text else {return false}
return object.firstName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)) || object.lastName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines))
})
searchArraySAEs = sectionsArraySAEs.filter ({ object -> Bool in
guard let text = searchBar.text else {return false}
return object.firstName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)) || object.lastName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines))
})
tableView.reloadData()
}
Мне это нравится SO
Как искать по имени и фамилии
Он находится вobjective-c
и у меня проблемы с его внедрением в мой собственный код. Я попробовал что-то вроде этого:
searchInternalArray = contactsInternalArray.filter({ object -> Bool in
guard let text = searchBar.text?.range(of: object.firstName + object.lastName) else {return false}
return object.firstName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)) || object.lastName.lowercased().contains(text.lowercased().trimmingCharacters(in: .whitespacesAndNewlines))
})
Это, очевидно, не так, как это должно быть реализовано, хотя.
Редактировать Не думаю, что это былоуместно, но, возможно, это так: я фильтрую несколько arrays
, поскольку у меня есть данные, поступающие из трех разных источников в tableView
. Весь код searchBar
выглядит как выше. Это обновлено.