2011-11-10 106 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