开发者

iPhone Core Data - restrict returned results to future events

开发者 https://www.devze.com 2022-12-11 21:58 出处:网络
I have a data store of events, however I only want to show events that occur in the future. I have a field denoting the date of the event of type NSDate.

I have a data store of events, however I only want to show events that occur in the future.

I have a field denoting the date of the event of type NSDate.

How do I filter events that have an NSDate * date time in the past?

Thanks

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 relea开发者_StackOverflowse];



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

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


You want to add a fetch predicate, an instance of NSPredicate. You're allowed to use the standard comparisons < and > in the predicate when creating it, so you can simply do:

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

Then execute your request as normal. The predicate will filter out all results that don't meet the criteria date > [NSDate date], i.e. dates that are older than now. (This assumes your date field for your Core Data objects is called date; adjust accordingly if it's something else.)

For more info about predicates, you can see:

  • The Predicate Programming Guide, Creating Predicates section
  • The Predicate Format String Syntax
  • The NSPredicate class documentation
0

精彩评论

暂无评论...
验证码 换一张
取 消