У меня есть данные, сохраненные таким образом,Применить NSPredicate на [(String, Array, <String>)]
var data = [(String, Array<String>)]()
Пример данных:
[(A, [Apple, Andy, Android]), (B, [Banana, Breakfast])]
Я пытаюсь применить фильтр поиска по этим данным с помощью предиката,
Вот что я пытался и не удалось,
func updateSearchResultsForSearchController(searchController: UISearchController) {
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (data as NSArray).filteredArrayUsingPredicate(searchPredicate)
data = array as! [(String, Array<String>)]
//reload tableView with fresh data
self.tableView.reloadData()
}
Сбой, поскольку я пытаюсь преобразовать свой data
в NSArray, чтобы применить фильтр, а затем попытаться преобразовать отфильтрованный массив обратно в нужный формат. (Я знаю, что это преобразование не сработает, это только для того, чтобы дать вам, ребята, представление о том, что я пытаюсь сделать.)
Мой вопрос: как применить фильтр поиска на моем массиве строк data
?
Как и, если условие поиска является «», то data
должен фильтровать по
[(A, [Andy, Android]), (B, [Banana])]
Кто просто ответил на мой вопрос, а затем удалил его, пожалуйста, отправить его снова! Я просто попробовал, и он работает, но поиск происходит по первому параметру 'data', но не по второму параметру, который является моим массивом String. Я думаю, мы близки, не могли бы вы объяснить мне код, пожалуйста? – Rao
Я только что редактировал свой ответ, только что опубликовал его сейчас. Это не похоже на элегантное решение, но оно работает –