Подтвердить что ты не робот

Использование NSPredicate для определения того, соответствует ли строка другой строке

У меня есть 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'", но это, похоже, не работает.

Есть ли более простой способ сделать это?

4b9b3361

Ответ 1

Попробуйте [NSPredicate predicateWithFormat:@"title ==[c] 'on call'"];

([c] делает сравнение равенства нечувствительным к регистру.)

Ответ 2

Попробуйте предикат с форматом @"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"