Фильтровать результаты Core Data по свойству IN array - PullRequest
24 голосов
/ 26 мая 2011

В настоящее время у меня есть Базовые данные, которые успешно возвращают все результаты для конкретной сущности с именем Event:

NSManagedObjectContext *context = [delegate managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event" 
                                                     inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];

NSError *error;
NSArray *fetchResults = [context executeFetchRequest:request error:&error];

Одним свойством сущности Event является строка с заголовком tid.У меня также есть массив filterArray, который содержит все разрешенные значения tid.

Как я могу получить свой запрос основных данных только для того, чтобы возвращать события, которые имеют свойство tid, которое соответствует одному из значений в filterArray?Я думаю, что ответ относится к NSPredicate, но я еще недостаточно знаком с ним, чтобы заставить его подчиниться моей воле.

1 Ответ

60 голосов
/ 26 мая 2011

Попробуйте:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tid IN %@", filterArray];

[request setPredicate:predicate];

Посмотрите на Совокупные операции в Руководстве по программированию предикатов .

ПРАВКА

Взгляните на NSP Предикат Базовые данные SDK iPhone 3.2 «IN IN» Исключение NSInvalidArgumentException .Это та же ошибка, что и у вас.Проблема заключалась в опечатке в имени столбца / атрибута.Синтаксис должен быть в порядке, он не может просто найти tid.

...