我有一个带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
答案 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