2009-11-21 81 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;相应的调整,如果是别的东西)

有关谓词的更多信息,你可以看到: