1
我有一个存储关于我的照片在核心数据中的信息的实体。该实体的一个属性是“lastSeen”,它存储了上次看到图片的日期和时间。从核心数据查询NSDate对象
我想查询我的数据库,只查看过去48小时内看到的图片。我怎么能这样做?
我知道我需要使用一些方法,如timeIntervalSinceNow和NSPredicte,但林不知道这个查询的语法是怎么样的。
任何帮助表示赞赏。
谢谢!
我有一个存储关于我的照片在核心数据中的信息的实体。该实体的一个属性是“lastSeen”,它存储了上次看到图片的日期和时间。从核心数据查询NSDate对象
我想查询我的数据库,只查看过去48小时内看到的图片。我怎么能这样做?
我知道我需要使用一些方法,如timeIntervalSinceNow和NSPredicte,但林不知道这个查询的语法是怎么样的。
任何帮助表示赞赏。
谢谢!
NSDate *minimalDate = [NSDate dateWithTimeIntervalSinceNow:-172800]; // 48h = 48*60*60 seconds
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Photo" inManagedObjectContext:context];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"viewDate" ascending:NO]];
request.predicate = [NSPredicate predicateWithFormat:@"viewDate > %@", minimalDate];
request.fetchBatchSize = 20;
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
[request release];
self.fetchedResultsController = frc;
[frc release];
附录
下面是如何创建的viewDate属性。
在myProjectName.xcdatamodeld
中选择Photo实体。 添加名为'viewDate'的属性并键入'Date'。 选择它,然后点击编辑>复制。
转到Photo.h
,然后单击想要生成属性的地方。 选择此特殊粘贴选项: 编辑>'粘贴属性界面'。 应该产生这行代码:
@property (nonatomic, retain) NSDate * viewDate;
在Photo.m
同样产生:
@dynamic viewDate;
我这样设置在我PictureViewController的的loadView日期:
self.photo.viewDate = [NSDate date];
Joost的谢谢非常!!这正是我所需要的。 我很感谢你的时间! –
我的荣幸! PS - 不要忘记将更改的viewDate属性保存到磁盘! 为此,您可以从AppDelegate复制saveContext方法。 – Joost