使用谓词在iOS 5中搜索嵌套数组

时间:2012-04-29 05:01:26

标签: iphone ios ios5 nspredicate predicate

我有一组地址簿联系词典,每个名称的字典都包含一个名称字符串和一组电子邮件地址。下面是我记录联系人数组时NSLog输出的代码片段:

{
    emails =         (
        "something@yahoo.com"
    );
    name = "Some Name";
},
{
    emails =         (
        "john.public@gmail.com",
        "john@public.name"
    );
    name = "John Q. Public";
},
[etc.]

我想使用谓词通过电子邮件地址搜索这些词典,返回至少有一个与搜索词匹配的电子邮件地址的所有条目。

到目前为止,我已经尝试了this question中描述的方法,只使用CONTAINS,如下所示:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"emails CONTAINS[c] %@", searchString];

但是任何搜索只返回一个空数组。如果我搜索名称字段,就像这样,它可以正常工作:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[c] %@", searchString];

所以我很确定它专门用于搜索数组。想法?

1 个答案:

答案 0 :(得分:6)

我明白了。这有效:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY emails CONTAINS[c] %@",currentString];

谢谢你是我的橡皮鸭,SO。