Получение объекта из NSMutableArray на основе значения ключа дочернего NSMutableDictonary - PullRequest
2 голосов
/ 03 апреля 2012

Итак, у меня есть NSMutableArray в моем приложении, которое заполнено так:

NSMutableArray
--Object 1 (NSMutableDictonary)
  --Value (i) for key (key)
  --Value (i) for key (key)
--Object 2 (NSMutableDictonary)
  --Value (i) for key (key)
  --Value (i) for key (key)

Мне нужно иметь возможность выбрать объект из основного NSMutableArray, ища ключ, который соответствует значению одного из ключей NSMutableDictonary ...

Я понимаю, что мог бы выполнить цикл так, чтобы добиться этого:

for (NSMutableDictionary *object in arrayObject) {
    if ([[object objectForKey:@"keyToSearch"] integerValue] == keyToCompare) {
        return [object objectForKey:@"keyToReturn"];
    }
}

Однако меня беспокоит, что если этот массив увеличится (что он может сделать), то для его поиска потребуется время ..

Так что мне было интересно, есть ли другой способ получить те же результаты, но более эффективно?

Спасибо

Ли

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Поиск, очевидно, займет линейное время в количестве словарей в массиве.Вы не сможете обойти это, используя другой способ поиска.Вы можете переписать свой поиск, чтобы использовать NSPredicate, и он будет немного короче, но не будет быстрее.

Если вы хотите сделать поиск быстрее, вам придется изменить ваши данныесостав.Или вы можете создать NSDictionary в качестве справочной таблицы, где ключами NSDictionary являются значения keyToSearch, а значениями являются NSMutableDictionaries в вашем массиве.

Still, если ваш массив действительно не станет действительно большим, время поиска будет незначительным, и вам не стоит об этом беспокоиться.

0 голосов
/ 03 апреля 2012

В конечном счете, любое перечисление любого массива будет занимать время, которое увеличивается с ростом размера массива.Если у вас есть какой-либо способ намека на его местоположение, это может сделать его быстрее, но в противном случае быстрое перечисление, вероятно, является самым быстрым способом просмотра данных любым способом.

Если только выпройти через сотни объектов, время, которое нужно, должно быть незначительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...