I am playing with an app that uses Core Data and NSManagedObjects to populate a UITableView. There is only one class in my application, called Event
. I have created the following custom instance method on Event
:
- (BOOL)isExpired {
return ([[self.endOn dateAtEndOfDay] timeIntervalSinceNow] < 0);
}
I would like to limit the UITableView
that displays Event
objects to only the Events that are expired - that is, where isExpired
returns YES
. I have tried to do this by adding an NSPredicate
to the NSFetchRequest
:
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary * bindings) {return([evaluatedObject isExpired]);}];
[fetchRequest setPredicate:predicate];
but I get the error: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Problem with subpredicate BLOCKPREDICATE(0x272ac)'
***
. Does this mean that you can't use a block predicate with an NSFetchRequest? Or have I just constructed it improperly?
Thank you!
See Question&Answers more detail:os