CoreData:NSPredicate 按日期过滤

CoreData: NSPredicate filter by date

我有一个包含以下日期的数据集 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.

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

DataModel

转换码

知道这里出了什么问题吗。

在您的模型中,您将 dateTime 属性 设置为 Date 对象,但将其保存为 double

所以你必须做:

dateTime = NSDate(dateWithTimeIntervalSinceReferenceDate:Double(activityInfo["eventDateTime‌​"] as! String))

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