CoreData:按日期过滤NSPredicate

时间:2016-06-14 07:55:51

标签: swift core-data nsdate nspredicate nsfetchrequest

我有一个包含以下日期6/14, 6/15, 6/16, 6/17 and 6/18

的数据集

我有两个谓词

let today = NSDate() 
NSPredicate(format: "checked == %@ AND dateTime >= %@", NSNumber(bool: false), today)
NSPredicate(format: "checked == %@ AND dateTime < %@", NSNumber(bool: false), today)

让我们说今天是6/16所以根据第一个谓词,fetchRequest应该只选择6/16, 6/17 and 6/18而对于第二个谓词,fetchRequest应该只选择6/14 and 6/15

但问题是第一个谓词选择所有行,第二个返回空白。

的DataModel

Data Model

转化代码

enter image description here

知道这里出了什么问题。

1 个答案:

答案 0 :(得分:2)

在您的模型中,您将filter = new Or(new Like("NumberOf", "%"+tfGlobalSearch.getValue().toString()+"%", false), new Like ("Type","%"+tfGlobalSearch.getValue().toString()+"%", false), new Like("Date created", "%"+tfGlobalSearch.getValue().toString()+"%", false) ); f.addContainerFilter(filter); 属性设置为dateTime对象,但您将其另存为Date

所以你必须这样做:

double

注意,我不会说Swift,所以我不知道这段代码是否会更短,但你明白了。