2009-11-21 70 views
0

我有一個事件數據存儲,但我只想顯示將來發生的事件。iPhone核心數據 - 限制返回結果到未來事件

我有一個字段表示NSDate類型的事件的日期。

如何篩選過去具有NSDate *日期時間的事件?

感謝

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Events" inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 


NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"eventDate" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors]; 
[sortDescriptors release]; 
[sortDescriptor release]; 



NSError *error; 
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 

if (mutableFetchResults == nil) { 
     // Handle the error. 
} 

回答

3

您想添加一個獲取謂語,NSPredicate的一個實例。你被允許創建時,它使用標準比較<>在謂語,所以你可以簡單地做:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date > %@", 
                  [NSDate date]]; 
[request setPredicate:predicate];

然後執行您的要求爲正常。謂詞將過濾掉所有不符合標準date > [NSDate date]的結果,即比現在更早的日期。 (這裏假設你的日期字段爲您的核心數據對象被稱爲date;相應的調整,如果是別的東西)

有關謂詞的更多信息,你可以看到: