2013-06-12 5 views
0
NSMutableArray *arrayOfPredicates=[[NSMutableArray alloc]init]; 
[self.attendeeListSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop){ 
    NSString *userId=[obj userId]; 
    [arrayOfPredicates addObject:[NSPredicate predicateWithFormat:@"userID == %@",userId]]; 
}]; 
NSPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:arrayOfPredicates]; 
[request setPredicate:compoundPredicate]; 

Я устанавливаю этот составной предикат для нескольких userIds в массиве, и мне нужно, чтобы пользователи из этих Ид пользователей использовали OR.Compound Predicate не работает

выше не работает, но когда я жестко прописывать с помощью

NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"(userID like[cd] %@) 
          OR (userID like[cd] %@)",@"sheetal2", @"sheetal3"]; 
[arrayOfPredicates addObject:predicate1]; 

Теперь это сказать working..Can anyboady, Что проблема с моим кодом ..

Благодаря

+0

Это может показаться глупым, в первом случае вы используете userID, а в другом вы подаете заявку на eventID? – Anupdas

+0

@ Анупды покидают удостоверения личности ... что я говорю, это не работает ... я просто скопировал вставку .. у меня есть Edged – sheetal

+1

Когда вы отправляете вопрос, не оставляйте места для угадывания. Даже сейчас ваш вышеприведенный запрос чувствителен к регистру, а второй - нечувствителен к регистру? А также запишите 'arrayOfPredicates', чтобы увидеть их содержимое. – Anupdas

ответ

1

В ваш первый код предикат использует ==. Во втором коде предикат использует LIKE[cd]. Поскольку userID является NSString, использование LIKE, как правило, является лучшим способом сказать предикату, чтобы сравнить значения, но реальная разница в том, что второй подход является случайным и диакритическим без учета чувствительности, а первый подход требует точного соответствия.

+0

Не могли бы вы проверить комментарии MartinR на этом [ответ] (http://stackoverflow.com/a/16358617/767730). Я думаю, что использование 'LIKE' не всегда является лучшим. – Anupdas

+2

Спасибо @Anupdas, я улучшил ответ, и я никогда не думал о том, чтобы делать «== [cd]» раньше, хорошую информацию. – Wain

+0

@Wain ya я получил ответ ... спасибо – sheetal