我想在swift中使用searchBar来搜索(核心数据填充)tableview的多个字段。我使用的searchPredicate是:
Let searchPredicate = NSPredicate(format: "(itemDate contains[c]
%@) OR (itemName contains[c] %@)", searchController.searchBar.text!,
searchController.searchBar.text!)
但是,itemDate的类型为NSDate且此谓词失败:'无法使用收件人2013-12-31 23:00:00 +0000(不是收藏品)' ;
let searchPredicate = NSPredicate(format: "(stringFromDate(itemDatum)
withFormat:@\"ccc d MMMM y\" contains[c] %@) OR (itemName contains[c] %@)",
searchController.searchBar.text!, searchController.searchBar.text!)
返回'无法解析函数名称' stringFromDate:'进入受支持的选择器(stringFromDate :)'所以这是一个愚蠢的猜测,当然,但也许这使我的问题更容易理解:我希望人们开始打字' nov'或者' 2017'并立即得到适当的结果,就像字符串一样。
欢迎任何提示!
答案 0 :(得分:0)
这对我有用:
var searchPredicate: NSPredicate = NSPredicate { (AnyObject indx, NSDictionary bindings) -> Bool in
var itemN: String? = indx.valueForKey("itemName") as? String
var itemD: String = dateFormatter.stringFromDate(indx.valueForKey("itemDatum") as! NSDate)
var searchBarText: String = searchController.searchBar.text.lowercaseString
return itemN?.lowercaseString.rangeOfString(searchBarText) != nil || itemD.lowercaseString.rangeOfString(searchBarText) != nil
}