2016-11-13 5 views
0

Мне нужно получить данные из данных Core, для этого мне нужно проверить Condition1 и Condition 2 с помощью NSPredicate. Но мне нужно только проверить условие 2, если условие 1 выполнено. Кто-нибудь, пожалуйста, помогите мне достичь этого сценария?NSPredicate with Multiple Condition - выполнить второе условие, основанное на первом условии

Logic

If (Condition1 == true) 
{ 
    if(Condition2 == True) 
     { 
     } 
    else 
     { 
     //Code 
     } 
} 
else 
{ 
//codes 
} 

Пожалуйста, помогите мне достичь этого сценария с использованием NSPredicate.

+0

Итак, если '(condition1 == верно) && (condition2 == верно)', некоторый код; if '(condition1 == true) && (condition2 == false)', некоторый код; 'if (condition1 == false) && (condition2 == true/false)', некоторый код правильно? – KrishnaCA

+0

'NSPredicate' может использоваться для извлечения или фильтрации данных. Он не может выполнять код. – Willeke

+0

@Willeke, ну есть 'predicateWithBlock:', но я беру ваше значение. –

ответ

1

Просто используйте выражение AND в строке предиката. NSPredicate рассматривает их как операторов короткого замыкания. Это подразумевается в этой консультации из раздела Predicate Programming Guide: Using Predicates – Performance Considerations:

Вы должны структурировать соединение предикатов, чтобы минимизировать количество проделанной работы. Регулярное выражение, в частности, является дорогостоящей операцией . В составном предиката, вы должны поэтому выполнять простые тесты перед регулярным выражением [...]:

В [...] Например, регулярное выражение [после OR] вычисляется только если первый пункт является ложным.

(Курсив)

+0

[NSCompoundPredicate andPredicateWithSubpredicates:] - это вызов, который я считаю – Alex

+0

@Alex, да, это API для программного программирования предиката, который, безусловно, действителен. Я думаю, что чаще всего предикаты строятся с использованием '[NSPredicate predicateWithFormat: @" ... "]', и в этом случае вы просто выражаете это с помощью ключевого слова 'AND' в строке, что я и получаю в. –