2014-12-20 4 views
0

У меня вопрос, у меня есть массив, который содержит словари, эти словари затем переходят в tableView. Теперь мне нужна функция поиска для фильтрации таблицы.filterContentForSearch - со словарями

Например: у меня есть такой Array/Dictionary

var filteredItems = [[String: String]]() 
var unfilteredItems = [[String: String]]() 

, а затем я хотел фильтровать, что с помощью функции, как этот

func filterContentForSearch (searchText:String, scope: Int) { 
     self.filteredItems = self.unfilteredItems.filter({ (description: String) -> Bool in 
      var searchMatch = description.rangeOfString(searchText) 
      return searchMatch != nil 
     }) 

    } 

Мое чувство говорит, что что-то не так, и это не» t работа, до сих пор я не мог понять, что может быть проблемой или подходом, который мог бы работать ... любые идеи?

Сообщение об ошибке я получаю от Xcode является: "[String, String] не подтипом Строка

Бег на Xcode 6.1.1

Спасибо за вашу помощь ...

ответ

0

Вот как я это сделал:

func filterContentForSearch (searchText:String, scope: Int) { 
    self.unfiltredItems = filtredItems.filter({ 
     $0["description"] == searchText 

    }) 
} 

Очень простой, но он работает ...

0

Попробуйте это:

var filteredItems : NSArray = []; 
var unfilteredItems : NSArray = []; // this array should contain your string data 

    func filterContentForSearch (searchText:String, scope: Int) { 
     if let predicate = NSPredicate(format: "SELF CONTAINS %@", searchText) { 
      self.filteredItems = self.unfilteredItems.filteredArrayUsingPredicate(predicate) 
     } 
     else 
      self.filteredItems = nil; 
    } 
+0

Спасибо за ваш комментарий, но это не сработает, он говорит мне, что строка Дон» t имеет член, называемый «filterArrayUsingPredicate» –

+0

О, извините, его метод в классе NSArray, необходимый для изменения объявления переменной – Mrunal

+0

Я получил это, разобрался, нет необходимости погружаться в него глубже ... спасибо –

0

у вас есть словари в unfilteredItems массиве. Но рассматривать их как строки внутри закрытия фильтра. Правильный тип должен быть

(description: [String: String]) -> Bool 
Смежные вопросы