我想让我的搜索栏快速在(填充核心数据)表格 View 的多个字段中进行搜索。我使用的 searchPredicate 是:
Let searchPredicate = NSPredicate(format: "(itemDate contains[c]
%@) OR (itemName contains[c] %@)", searchController.searchBar.text!,
searchController.searchBar.text!)
但是 itemDate 的类型为 NSDate,并且此谓词失败:“不能在集合中使用 in/contains 运算符 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' 并立即获得正确的结果,就像字符串一样。
欢迎任何提示!
最佳答案
这对我有用:
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
}
关于swift - NSPredicate:如何将 CONTAINS 与 NSDate 字段一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100351/