Подтвердить что ты не робот

Результаты фильтра Core Core по массиву IN

В настоящее время Core Data успешно возвращает все результаты для определенного объекта под названием 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.

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

4b9b3361

Ответ 1

Попробуйте следующее:

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

[request setPredicate:predicate];

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

ИЗМЕНИТЬ

Посмотрите NSPredicate iPhone 3.2. Основные данные SDK "IN" "Исключение исключений NSInvalidArgumentException" . У вас такая же ошибка. Проблема была опечаткой в ​​имени столбца/атрибута. Синтаксис должен быть в порядке, он не может просто найти tid.