2010-02-08 3 views
3

Я пытаюсь использовать фильтр FilterArrayUsingPredicate NSArray: для фильтрации массива основных данных, управляемых данными. Вот схема:Использование filterArrayUsingPredicate всегда возвращает пустой массив для выделенных объектов Core Data

NSArray *array = self.fetchedResultsController.fetchedObjects; 

NSPredicate *predicate = [NSPredicate 
          predicateWithFormat:@"name contains[c] %@", searchString]; 

NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate]; 

Это всегда возвращает пустой 'filterArray'? Я предполагаю, что это мой предикат, но я знаю, что объекты в «массиве» - это управляемые объекты с ключом под названием «имя». Значение «searchString» в порядке, и я выполнил функцию executeFetch: before.

+1

Что вы получаете, когда вы делаете ро массива? В массиве содержится то, что вы думаете, что он делает? –

+0

Да, массив был ноль - я думал, что он был сохранен из первоначальной выборки, но это была не моя ошибка. Мой поиск в виде таблиц намного быстрее, поэтому не требуется обратная связь с хранилищем данных при каждом изменении строки поиска. Благодарю. – petert

ответ

6

Ваш предикат в порядке.

Я бы перепроверить массив и SearchString:

NSArray *array = self.fetchedResultsController.fetchedObjects; 

NSLog(@"array = %@",array); 
NSLog(@"array count = %d",[array count]); 
NSLog(@"searchString = %@",searchString); 

NSPredicate *predicate = [NSPredicate 
          predicateWithFormat:@"name contains[c] %@", searchString]; 

NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate]; 
+0

Спасибо - опять немного отладки, в коде или с помощью отладчика, твой друг. – petert

 Смежные вопросы

  • Нет связанных вопросов^_^