Извлеченные свойства внутри предиката NSFetchedResultsController - PullRequest
3 голосов
/ 23 июня 2011

У меня есть объект 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>'

Я что-то упускаю или просто невозможно использовать извлеченные свойства внутри предикатов?

1 Ответ

6 голосов
/ 23 июня 2011

Очевидно, NSPredicate может фильтровать только по атрибутам, которые находятся в структуре базы данных (это имеет смысл).В моем случае с помощью подзапроса удалось:

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

Я понятия не имел, что мы можем сделать подзапросов в NSPredicate .Кредиты идут на @kyleve.

...