开发者

Fetched Properties inside NSFetchedResultsController's predicate

开发者 https://www.devze.com 2023-03-15 00:49 出处:网络
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?

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.

0

精彩评论

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