filterContentForSearch - 使用词典

时间:2014-12-20 10:49:49

标签: ios xcode swift dictionary

我有一个问题,我确实有一个包含字典的数组,这些字典然后进入tableView。现在我需要一个搜索功能来过滤表格。

例如:我有那种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]不是String的子类型

在Xcode 6.1.1上运行

感谢您的帮助......

3 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:0)

你在unfilteredItems数组中有词典。但是你将它们视为过滤器闭包内的String。正确的类型应该是

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

答案 2 :(得分:0)

我是这样做的:

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

    })
}

非常简单但有效......