使用NSPredicate确定字符串是否等于另一个字符串

时间:2010-06-03 15:30:01

标签: objective-c nsstring nsarray nspredicate

我使用NSArray方法返回了[CalCalendarStore eventPredicateWithStartDate]个CalEvents。从返回的事件中,我只想保留事件标题== @"on call"(不区分大小写)的那些。

我能够在数组中保留标题包含 @"on call"的事件,其中包含以下代码(其中'events'是'NSArray'填充CalEvents) :

NSPredicate *onCallPredicate = [NSPredicate predicateWithFormat:@"(SELF.title CONTAINS[c] 'on call')"];
[events filteredArrayUsingPredicate:onCallPredicate];

我尝试过使用谓词格式字符串,如:

@"SELF.title == 'on call'"但这似乎不起作用。

有更简单的方法吗?

2 个答案:

答案 0 :(得分:105)

尝试[NSPredicate predicateWithFormat:@"title ==[c] 'on call'"];

[c]使相等比较不区分大小写。)

答案 1 :(得分:10)

尝试格式为@"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"