NSPredicate with localizedCaseInsensitiveCompare

时间:2011-10-05 14:24:37

标签: core-data nspredicate case-sensitive

我有一个带CoreData的应用程序,我需要使用NSPredicate来检索城市中的所有联系人。

问题是“城市”可能写得像伦敦,伦敦甚至伦敦。用户将键入伦敦进行搜索,或者输入LoNDon。

我需要的是将NSPredicate与localizedCaseInsensitiveCompare一起使用,以便检索所有记录。

代码:

    request.predicate = [NSPredicate predicateWithFormat:
                         @"activityDeleted == %@ && (SUBQUERY(hasMembers, $sub, $sub.memberDeleted == %@).@count > 0) && (SUBQUERY(hasMembers, $sub, $sub.city == %@)", 
                         [NSNumber numberWithBool:NO], 
                         [NSNumber numberWithBool:NO],
                         city];

以上NSPredicate会检索某个城市中有联系人但未删除的所有群组,但我遇到了CaseInsensitive问题......

我该怎么做?

谢谢,

RL

2 个答案:

答案 0 :(得分:1)

您可以在==

上使用不区分大小写和变音符号不敏感的修饰符“[cd]”
SUBQUERY(hasMembers, $sub, $sub.city ==[cd] %@)

您可以尝试在stackoverflow中搜索“不区分大小写的nspredicate”已经有几个答案https://stackoverflow.com/search?q=case+insensitive+nspredicate

答案 1 :(得分:1)

这里不需要子查询。您的整个谓词可以是:

@"activityDeleted == NO AND ANY hasMembers.memberDeleted = NO AND ANY hasMembers.city =[cd] %@", city