У меня есть много фильтров, которые я бы хотел, чтобы пользователь мог применить к результатам NSFetchedResultsController, отображаемым в tableView: такие вещи, как цвет, тип, цена, поставщик и т. Д.
справаТеперь я применяю эти фильтры, изменяя свойства NSPredicate и NSSort для запроса выборки по следующим строкам:
NSPredicate * predicate = nil;
if (criteria =="color") {
predicate = [NSPredicate predicateWithFormat:@"color == %@", color];
else if(criteria = "size") {
predicate = [NSPredicate predicateWithFormat:@"size == %@", size];
}
fetchRequest.predicate = predicate;
Однако я замечаю, что это работает несколько медленно, и NSFetchedResultsController, кажется, постоянноработает в фоновом режиме.
Альтернативный подход может состоять в том, чтобы сначала получить все результаты, а затем отфильтровать их после того, как все они были получены следующим образом:
NSArray *searchResults = nil;
NSPredicate *colorPredicate = [NSPredicate predicateWithFormat:@"color== %@", color];
searchedResults = [fetchedResults filteredArrayUsingPredicate:resultPredicate];
Перед переписыванием моего кода, которыйсодержит десятки возможных вариантов поиска, я был бы признателен за любые советы о том, считается ли один подход, как правило, лучше или есть другой.
Заранее благодарен за любые предложения.