0

私は持っている

NSDictionary *myDictionary = @{ @"1":@"Egg Benedict",
                                @"2":@"Mushroom Risotto",
                                @"3":@"Full Breakfast",
                                @"4":@"Hamburger",
                                @"5":@"Ham and Egg Sandwich",
                                @"6":@"Cream Brelee"};
NSMutableArray *myKeys = [NSMutableArray arrayWithArray:[myDictionary allKeys]];

myDictionary を述語でフィルタリングしたい。どのように構成すればよいですか?アルゴリズムとして、私はそれが次のようなものであるべきだと思います:

[filteredKeys removeAllObjects];
for (NSString *a in myKeys) {
    if ([[myDictionary objectForKey:a] rangeOfString:searchText].location != NSNotFound) {
        [filteredKeys addObject:a];
    }
}

述語文字列でそれを達成するにはどうすればよいですか?

4

1 に答える 1

0

キーの変更可能な配列がmyObjectsあるため、その配列をフィルタリングできます。キーは単なる文字列です。そのための述語は次のようになります。

@"SELF contains[c] %@", searchText

配列をフィルタリングしたら、更新された辞書を次のように取得できます。

NSDictionary *filtered = [myDictionary dictionaryWithValuesForKeys:myObjects];
于 2013-10-22T12:21:33.963 に答える