Ich versuche, ein indiziertes Wörterbuch zu durchsuchen, um einen bestimmten Client basierend auf dem Nachnamen des Clients zurückzugeben. Im Folgenden sind die Datenstrukturen, die ich verwende. Jedes Client-Objekt hat eine name -Eigenschaft, die ein String ist.Ein Array in einem Verzeichnis filtern - Swift
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!
Wenn ich meine Indizierung zu tun, die Kontakte Wörterbuch Rückkehr:
{A: [Client("Andrew")]}
Letters Array zurück:
[A]
ich die UISearchController bin mit der gefilterten Reihe von Clients angezeigt werden soll.
func updateSearchResults(for searchController: UISearchController) {
// how to filter the dictionary
self.tableView.reloadData()
}
Ich habe aber keine Ahnung, wie das Wörterbuch filtern, um die richtige Liste von Kunden zurück. Ich habe versucht zu verwenden
contacts.filter(isIncluded: ((key: String, value: [Client])) throws -> Bool((key: String, value: [Client])) throws -> Bool)
Aber ich war sehr verwirrt über die Umsetzung. Ich verwende Xcode 8.0 und Swift 3.0.
Wenn mir jemand in die richtige Richtung zeigen könnte, würde das sehr geschätzt werden. Bitte lassen Sie mich wissen, wenn ich etwas klären muss. Vielen Dank im Voraus. Der vollständige Code kann an meinem Github