Rob*_*hen 8 core-data nsdate uitableview nspredicate nsfetchedresultscontroller
我正在使用a NSFetchedResultsController和a UITableViewController来填充CoreData数据库中的UITableView.
我有一个NSDate对象保存到标记为"startTime"的Date属性中.然后我试图通过使用如下所示的方式NSPredicate来获取今天的数据:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"startDate == %@",
todaysDate];
Run Code Online (Sandbox Code Playgroud)
我的结果为零.我理解这一点,因为一个NSDate对象只保持自1970年1月1日以来的秒数或毫秒数等等吗?因此,比较1111111111111和1111111111112,而在同一天,两个不同的NSDate对象是不相等的.
那么,如何NSPredicate格式化以便它可以做到呢?我猜它会创建两个NSDate对象:一个是昨晚12点,另一个是今晚12点,比较startDate,看看它是否在这两个之间NSDate.
我有点新手NSPredicate,那怎么能实现呢?
yuj*_*uji 24
使用NSCompoundPredicate.
NSPredicate *firstPredicate = [NSPredicate predicateWithFormat:@"startDate > %@", firstDate];
NSPredicate *secondPredicate = [NSPredicate predicateWithFormat:@"startDate < %@", secondDate];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:firstPredicate, secondPredicate, nil]];
Run Code Online (Sandbox Code Playgroud)
哪里firstDate是上午12点今天上午secondDate今晚凌晨12时.
PS这是今天早上12点的方法:
NSCalendar *calendar = [NSCalendar calendar]; // gets default calendar
NSCalendarComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; // gets the year, month, and day for today's date
NSDate *firstDate = [calendar dateFromComponents:components]; // makes a new NSDate keeping only the year, month, and day
Run Code Online (Sandbox Code Playgroud)
今晚12点,改变components.day.
| 归档时间: |
|
| 查看次数: |
5257 次 |
| 最近记录: |