3

我有一个带有.localConcertsfetched 属性的 Artist 对象(基本上是完整 . 集的子concerts集),我可以在我的 NSFetchedResultsController 谓词中使用该属性吗?

这是我正在尝试的:

NSFetchRequest *request = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Artist" inManagedObjectContext:context];
[request setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"localConcerts.@count > 0"];
[request setPredicate:predicate];

fetchedResultsController = [[NSFetchedResultsController alloc]
                            initWithFetchRequest:request
                            managedObjectContext:context
                            sectionNameKeyPath:nil
                            cacheName:nil];

但我得到:

'keypath localConcerts not found in entity <NSSQLEntity Artist id=1>'

我是否遗漏了任何内容,或者只是无法在谓词中使用获取的属性?

4

1 回答 1

6

显然NSPredicate只能使用数据库结构中的属性进行过滤(这是有道理的)。就我而言,使用子查询可以解决问题:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(shows, $show, $show.distance < %@).@count > 0", [SWDataManager sharedManager].localFilterDistance];

我不知道我们可以在 NSPredicate中进行子查询,很高兴知道。学分去@kylev

于 2011-06-23T05:39:22.237 回答