2016-09-03 6 views
-1

Ich bin im Grunde auf der Suche genau zu vergleichen, wie fast alle Suchvorgänge filtern.Filtern von Arrays mit teilweise genauer Übereinstimmung?

Jeder Führer für das Suchfilter ich bisher gesehen habe bietet

let lower = searchBar.text!.lowercaseString 

filteredInterestArray = interestsArray.filter({$0.title.rangeOfString(lower) != nil}) 

, die wie etwas gibt im Grunde:

[ "Katze", "Rat", "Fledermaus", "Atlas"]

Wenn Sie "at" eingeben, wird jedes einzelne angezeigt, wenn wirklich nur Altas angezeigt werden sollten. Wenn du "stla" eintippst, würde auch ein Atlas auftauchen, der offensichtlich sehr unintuitiv ist.

Wie wird richtig gefiltert?

Antwort

1

Um dies zu erreichen, können Sie die Methode hasPrefix(_:) anstelle der Methode rangeOfString verwenden.

Verwendung:

let lower = searchBar.text!.lowercaseString 
filteredInterestArray = interestsArray.filter({$0.title.hasPrefix(lower)}) 
1

NSString bietet hasPrefix:, um zu bestimmen, ob ein String mit einem anderen beginnt.

Das OP zeigt nicht an, ob die Zeichenfolgen in interestsArray Kleinbuchstaben sind, aber wenn sie nicht sind, müssen Sie force them to lower überprüfen.

Verwandte Themen