Используя 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'" но это, кажется, не работает.

Существует ли более легкий способ сделать это?

35
задан KAR 29 May 2017 в 20:42
поделиться

2 ответа

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

( [c] делает сравнение равенства без учета регистра.)

106
ответ дан 27 November 2019 в 06:28
поделиться

Попробуйте сказуемое с форматом @"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"
10
ответ дан 27 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: