2014-12-20 47 views
0

我有一個問題,我確實有一個擁有字典的數組,然後這些字典進入tableView。現在我需要一個搜索功能來過濾表格。filterContentForSearch - with Dictionaries

例如:我有這樣的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 
     }) 

    } 

我的感覺功能說有什麼不對,它穿上」到目前爲止,我無法弄清楚什麼是問題或可行的方法......任何想法?

的錯誤信息,我從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有一個名爲「filteredArrayUsingPredicate」的成員 –

+0

哦,對不起,它在NSArray類中的一個方法,需要更改變量聲明 – Mrunal

+0

我把它整理出來了,不需要深入瞭解它......謝謝 –

0

你有在unfilteredItems數組中的字典,但你把他們當作字符串在過濾器關閉中,正確的類型應該是

(description: [String: String]) -> Bool