2013-11-23 3 views
0

У меня есть NSMutableArray из NSDictionaries. Я хотел бы иметь возможность фильтровать динамически. Например, . У меня есть 3 типа фильтровМатрица фильтра динамически основана на 3 NSPredicates

- area 
- item 
- type 

если область chossen то я хотел бы, чтобы фильтровать массив с областью предиката, однако, если пользователь выбирает для фильтрации элемента тоже массив в настоящее время фильтрованной области будет иметь фильтр элемента тоже применяется.

Однако, если фильтр области удален, я хотел бы показать фильтр нового элемента.

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

Я могу получить фильтр для фильтрации, основанный на последнем выбранном предикате. Поэтому, если я выбираю область, тогда элементы текущего фильтра будут только те, которые не являются одновременно.

любая помощь, советы или пример кода были бы очень признательны.

+0

Трудно вам сообщить об этом, не зная больше о рабочем потоке. Как пользователь выбирает, какой фильтр использовать? Как он удаляет фильтр? – rdelmar

ответ

3

Попробуйте что-то вроде:

NSMutableArray *predicates = [NSMutableArray array]; 

if (...) { 
    [predicates addObject:...]; 
} 

NSCompoundPredicate *p = [[NSCompoundPredicate alloc] initWithType:NSAndPredicateType subpredicates:predicates]; 

Где вы добавляете отдельные предикаты в массив, если они необходимы. Это предполагает, что необходимо применять хотя бы один предикат.

+0

отлично. попробуем это сейчас. – HurkNburkS

+0

безупречный. еще раз спасибо ;) – HurkNburkS

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