3

私はアドレス帳の連絡先辞書の配列を持っています。各名前の辞書には、名前の文字列と電子メール アドレスの配列が含まれています。連絡先の配列をログに記録したときの NSLog 出力のスニペットを次に示します。

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

述語を使用してこれらの辞書を電子メール アドレスで検索し、検索用語に一致する電子メール アドレスが少なくとも 1 つ含まれているすべてのエントリを返します。

これまでのところ、次のように CONTAINS を使用して、この質問で説明されている方法を試しました。

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

しかし、どの検索でも空の配列が返されました。代わりに名前フィールドを検索すると、うまくいきます。

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

だから私はそれが特に配列を検索していると確信しています。アイデア?

4

1 に答える 1

6

ああ、私はそれを理解しました。これは機能します:

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

私のラバーダッキーになってくれてありがとう、SO。

于 2012-04-30T01:58:28.400 に答える