Фильтровать массивы, соответствующие префиксу и символам, присутствующим в строке поиска одновременно - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть строковый массив, такой как [Объединенные Арабские Эмираты Дуаби, Кастанеа - Греция, Турин - Италия], мне нужно фильтровать по префиксу и по символу в строке поиска одновременно. когда я ищу «D», он должен показывать «Дубай - Объединенные Арабские Эмираты», а если я ищу «объединенный», он должен показывать также «Дубай - Объединенные Арабские Эмираты».

Вот что я сделал

       self.filteredArray = self.dataArray.filter({ (country) -> Bool in

            let countryText: NSString = country as NSString

                return countryText.hasPrefix(searchString) || countryText.localizedCaseInsensitiveContains(searchString)

        })

Мне нужен высокий приоритет для фильтрации префиксов, если для фильтрации префиксов нет результата, он должен проверить наличие строки.

1 Ответ

0 голосов
/ 01 ноября 2018

Вы, конечно, не нуждаетесь в наведении на NSString, но range(of

self.filteredArray = self.dataArray.filter{ $0.range(of: searchString, options: .caseInsensitive) != nil }

Поиск строки независимо от префикса или содержит , поскольку range(of ищет first вхождение строки. На самом деле поиск prefix в вашем коде тоже избыточен

...