IOS / Objective-C / NSFetchedResultsController: самый быстрый способ фильтрации результатов - PullRequest
0 голосов
/ 26 августа 2018

У меня есть много фильтров, которые я бы хотел, чтобы пользователь мог применить к результатам 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];

Перед переписыванием моего кода, которыйсодержит десятки возможных вариантов поиска, я был бы признателен за любые советы о том, считается ли один подход, как правило, лучше или есть другой.

Заранее благодарен за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...