我的核心数据模型有一个名为Item
的实体,它有一个名为insertedDate
的日期属性。应用程序首选项设置具有选项,允许用户将Item
对象保留为自插入数据库以来的特定时间间隔。
insertedDate
属性将在托管对象类的awakeFromInsert
方法中设置。
现在我有"1 day", "2 days", "1 week", "1 month"
等选项......如果用户选择"1 day"
,那么如果项目的插入日期与当前日期超过24小时相比,则应删除这些项目在应用程序终止之前。
我的问题是:如何根据使用谓词的insertedDate
和current date
之间经过的时间间隔大于用户指定的保持时间间隔选项来获取Item对象?
非常感谢所有的帮助。
答案 0 :(得分:1)
NSPredicate支持基于NSDate属性查询对象,例如
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"insertedDate <= %@", minInsertionDate];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext:context]];
[request setPredicate:predicate];
这就是你如何计算minInsertionDate的值,例如:表示在所选过滤器之前插入的所有项目的时间点。为此,您可以使用NSDate的dateWithTimeIntervalSinceNow:类方法,例如获取代表1天前的日期对象...
NSTimeInterval secondsInADay = 24 * 60 * 60;
NSDate *minInsertionDate = [NSDate dateWithTimeIntervalSinceNow:-secondsInADay];