Многомерные объекты данных - PullRequest
0 голосов
/ 21 августа 2011

Я нахожусь в процессе выбора наилучшего способа организации данных в моем приложении.Я пытаюсь решить, нужно ли мне беспокоиться о требованиях к памяти и обработке для нескольких различных стилей организации данных с использованием NSArray и NSDictionary, и какой из этих методов будет лучше.

Рассмотрим этот пример:

У вас есть упорядоченный список отдельных людей и информация, связанная с каждым человеком.Заказывается по какой-то произвольной причине, которая здесь не имеет отношения.

Список, как он упорядочен, представляет собой NSArray.У меня есть два варианта, как я вижу:

  • Заполните этот массив NSDictionaries.Внутри каждого словаря есть информация для этого человека.IE ключ для «name», «address», «email» или что угодно.
  • Или ваш NSArray содержит просто список уникальных идентификаторов в виде NSString s (массив ключей).Затем у вас есть отдельные NSDictionaries для каждого информационного элемента, например, один словарь для «адресов электронной почты», другой для «имен» и т. Д., И для каждого словаря ваш уникальный идентификатор - это ключ словаря.

IsЕсть ли более «элегантное» решение, чем любое из них, и будет ли оно предпочтительнее другого для требований времени выполнения приложения?

Я пришел из PHP-фона, где создание многомерного массива действительно просто и интуитивно понятно,где вы можете делать простые вещи, такие как:

echo "The second person's name is ".$person[2][name];

Изучение наилучшей практики в Задаче C было для меня немного сложным.

1 Ответ

0 голосов
/ 21 августа 2011

Ваше второе предложение (отдельные словари) кажется мне совершенно не понятным. Кроме того, вы не увидите большой разницы в использовании памяти между двумя вариантами. Массив словарей в порядке.

Альтернативный вариант, который я бы предложил, это на самом деле иметь класс, например:

@interface Person : NSObject
@property (copy) NSString *name;
@property (copy) NSString *address;
@property (copy) NSString *email;
@end

Это может быть потенциально более эффективным, чем использование словарей, поскольку каждый объект Person будет иметь именно то место, которое требуется для этих трех полей.

...