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,所以我不知道这段代码是否可以更短,但你明白了。
我有一个包含以下日期的数据集 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,所以我不知道这段代码是否可以更短,但你明白了。