Fetched Properties inside NSFetchedResultsController's predicate
I have an Artist object with a .localConcerts
fetched property (basically a subset of the full .concerts
set), can I use that property inside my NSFetchedResultsController predicate?
Here's what I'm trying:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Artist" inManagedObjectContext:context];
[request setEnti开发者_StackOverflow社区ty:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"localConcerts.@count > 0"];
[request setPredicate:predicate];
fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:nil];
But I'm getting:
'keypath localConcerts not found in entity <NSSQLEntity Artist id=1>'
Am I missing anything or is it just not possible to use fetched properties inside predicates?
Apparently NSPredicate
can only filter using attributes that are in the database structure (this makes sense). In my case, using a subquery did the trick:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(shows, $show, $show.distance < %@).@count > 0", [SWDataManager sharedManager].localFilterDistance];
I had no idea we could do subqueries in NSPredicate, that's great to know. Credits go to @kyleve.
精彩评论