从我的表中我想要选择特定日期的所有行而不考虑NSDate的时间组件。请问任何人建议使用NSPredicate来实现这一目标吗?
答案 0 :(得分:0)
NSDate
描述了一个绝对的时间点,没有" day"或"时间"组件。
核心数据"日期"属性,存储为秒数
自2001年1月1日起,格林尼治标准时间在数据库中。
你可能想要的是获取一些" Date"属性属于
由给定日期的开始和第二天的开始给出的间隔。
因此,您必须先使用NSCalendar
方法计算这些日期:
NSDate *yourDate = ...;
NSDate *startOfDay, *startOfNextDay;
NSTimeInterval lengthOfDay;
NSCalendar *cal = [NSCalendar currentCalendar];
[cal rangeOfUnit:NSDayCalendarUnit startDate:&startOfDay interval:&lengthOfDay forDate:yourDate];
startOfNextDay = [startOfDay dateByAddingTimeInterval:lengthOfDay];
然后使用一个谓词来获取属性所在的所有对象 这两个值:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date >= %@ AND date < %@",
startOfDay, startOfNextDay];