2011-11-10 108 views
1

我有一个存储关于我的照片在核心数据中的信息的实体。该实体的一个属性是“lastSeen”,它存储了上次看到图片的日期和时间。从核心数据查询NSDate对象

我想查询我的数据库,只查看过去48小时内看到的图片。我怎么能这样做?

我知道我需要使用一些方法,如timeIntervalSinceNow和NSPredicte,但林不知道这个查询的语法是怎么样的。

任何帮助表示赞赏。

谢谢!

回答

2
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]; 
+0

Joost的谢谢非常!!这正是我所需要的。 我很感谢你的时间! –

+0

我的荣幸! PS - 不要忘记将更改的viewDate属性保存到磁盘! 为此,您可以从AppDelegate复制saveContext方法。 – Joost