我有一个问题,我确实有一个包含字典的数组,这些字典然后进入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上运行
感谢您的帮助......
答案 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
})
}
非常简单但有效......