, поскольку я не являюсь носителем английского языка. Надеюсь, я правильно понял, чего вы пытаетесь достичь.
Если бы я не понял, что вы пытаетесь достичь, если, например, массив результатов поиска содержит строки @"Anna Haro"
и @"John Appleseed"
, вы хотите, чтобы извлечь соответствующие ключи из заданного словаря, и создать новый словарь, который содержит только строки массива результатов и соответствующие им ключи из словаря, не так ли?
Если это то, что вы пытаетесь сделать, вы можете сделать следующее:
{
// resultsArray will represent the NSArray that hold the search results
// originalDict will represent the NSDictionary you want to extract the keys from
NSMutableDictionary *resultsDict = [[NSMutableDictionary alloc] init];
for (NSString *object in resultsArray) {
NSArray *keys = [originalDict allKeysForObject: object];
for (NSArray *key in keys) {
[resultsDict setObject: object forKey: key];
}
}
}
В коде выше мы сначала создать NSMutableDictionary
, который будет наш новый словарь из результатов,
Тогда мы итерация через каждый объект массива результатов поиска,
Затем мы вызываем NSDictionary
метод allKeysForObject
в оригинальном словаре для каждого объекта в массиве, который создает NSArray
со всеми ключами, соответствующими этому объекту, поэтому, если у вас есть несколько ключей для объекта, который в вашем конкретный случай, если я правильно понимаю, - это несколько массивов телефонных номеров для человека (хотя, я думаю, это не должно произойти), массив будет содержать все из них, и поэтому наш следующий шаг - итерация по этому массиву ,
И, наконец, мы просто добавляем значение и пару ключей в новый словарь.
Лично я бы установил его наоборот,
Я бы установил массив номеров телефонов в качестве объекта и имя человека в качестве ключа.
Сделать для меня больше смысла, и я думаю, что будет легче получить доступ таким образом,
Но это ваш выбор.
Я надеюсь, что ответил на ваш вопрос,
Удачи!
Спасибо! Я выбрал эту структуру, потому что ключи (номера телефонов) уникальны. – bdv