2014-09-03 54 views
0

我的核心數據模型具有名爲Item的實體,它具有名爲insertedDate的日期屬性。應用程序首選項設置具有讓用戶在插入數據庫後將特定時間間隔保留爲Item對象的選項。與NSDate比較相關的核心數據謂詞

insertedDate屬性將設置在管理對象類的awakeFromInsert方法中。

現在我有像"1 day", "2 days", "1 week", "1 month"這樣的選項......如果用戶選擇"1 day",那麼如果項目的插入日期與經過24小時的當前日期比較,則應在應用程序終止前刪除這些項目。

我的問題是:如何根據它的insertedDatecurrent date之間經過的時間間隔大於用戶指定的保留時間間隔選項使用謂詞來獲取Item對象?

非常感謝所有的幫助。

回答

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:class方法,例如獲得代表1天前的日期對象...

NSTimeInterval secondsInADay = 24 * 60 * 60; 
NSDate *minInsertionDate = [NSDate dateWithTimeIntervalSinceNow:-secondsInADay]; 
+0

謝謝,但我不知道「minInsertionDate」的手段?你能解釋一下嗎? – 2014-09-03 12:52:54

+0

「autorelease」?? – Mundi 2014-09-03 18:59:32