swift - NSPredicate:如何将 CONTAINS 与 NSDate 字段一起使用?

标签 swift nspredicate

我想让我的搜索栏快速在(填充核心数据)表格 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/

相关文章:

ios - NSPredicate 没有返回预期的项目

ios - 当键盘快速出现时移动文本字段

ios - 如何将数据从一个容器传递到另一个容器,两者都嵌入在 swift 中的同一个 uiviewcontroller 中?

ios - AVQueuePlayer 需要很多时间来播放第一首歌曲

ios - 如何在 iOS 中对对象的对象值数组使用谓词

iphone - NSPredicate,NsNumber numberWithFloat :0. 0 (iPhone)

ios - 在 SDCAlertView 中添加约束

ios - 如何将scrollView嵌入到UIViewController的 View 顶部并添加其中包含内容的自定义UIView?

ios - 使用核心数据的不同 id 列的总和

core-data - NSPredicate和CoreData-确定iOS上的Date属性是否为 "today"(或从昨晚12am到今晚12am)