Я пытаюсь выполнить поиск в индексированном словаре, чтобы вернуть конкретного клиента на основе фамилии клиента. Ниже приведены структуры данных, которые я использую. Каждый клиентский объект имеет свойство имени, которое является строкой.
var clients = Client.loadAllClients() //Returns client array
var contacts = [String: [Client]]() //Indexed clients in a dictionary
var letters: [String] = []
var filteredClient = [Client]()
var shouldShowSearchResults = false
var searchController : UISearchController!
Когда я делаю индексацию, словарь контактов возвращает:
{A: [Client("Andrew")]}
Массив Letters возвращает:
[A]
Я использую UISearchController для отображения отфильтрованного массива клиентов.
func updateSearchResults(for searchController: UISearchController) {
// how to filter the dictionary
self.tableView.reloadData()
}
Однако я понятия не имею, как отфильтровать словарь, чтобы вернуть правильный список клиентов. я пытался использовать
contacts.filter(isIncluded: ((key: String, value: [Client])) throws -> Bool((key: String, value: [Client])) throws -> Bool)
Но я был очень смущен реализацией. Я использую Xcode 8.0 и Swift 3.0.
Если бы кто-нибудь мог указать мне в правильном направлении, это было бы очень признательно. Пожалуйста, дайте мне знать, если мне нужно что-то уточнить. Заранее спасибо. Полный код можно найти на моем Github.
class
. 05.12.2018