Ответ 1
Попробуйте [NSPredicate predicateWithFormat:@"title ==[c] 'on call'"];
([c]
делает сравнение равенства нечувствительным к регистру.)
У меня есть NSArray
CalEvents, возвращенный с помощью метода [CalCalendarStore eventPredicateWithStartDate]
. Из возвращаемых событий я пытаюсь сохранить только те, в которых заголовок события == @"on call"
(без учета регистра).
Я могу сохранить в массиве те события, название которых включает @"on call"
со следующим кодом (где "события" - это "NSArray", заполненный с помощью CalEvents
):
NSPredicate *onCallPredicate = [NSPredicate predicateWithFormat:@"(SELF.title CONTAINS[c] 'on call')"];
[events filteredArrayUsingPredicate:onCallPredicate];
Я пробовал использовать строку формата предиката, например:
@"SELF.title == 'on call'"
, но это, похоже, не работает.
Есть ли более простой способ сделать это?
Попробуйте [NSPredicate predicateWithFormat:@"title ==[c] 'on call'"];
([c]
делает сравнение равенства нечувствительным к регистру.)
Попробуйте предикат с форматом @"self.title like[c] 'on call'"
. Следующий пример кода выводит 2 строки:
NSArray* ar = [NSArray arrayWithObjects:@"on call", @"I'm on call", @"lala", @"On call", nil];
NSArray* filt = [ar filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self like[c] 'on call'"]];
NSLog([filt description]);
//Output
"on call",
"On call"