NSFetchedResultsController 谓词中的获取属性



我有一个Artist对象,它具有.localConcerts提取的属性(基本上是完整的.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>'

我是遗漏了什么,还是不能在谓词中使用提取的属性?

显然,NSPredicate只能使用数据库结构中的属性进行过滤(这是有道理的)。在我的例子中,使用子查询就成功了:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(shows, $show, $show.distance < %@).@count > 0", [SWDataManager sharedManager].localFilterDistance];

我不知道我们可以在NSPredicate中进行子查询,这很好。学分归@kylieve所有。

相关内容

  • 没有找到相关文章