Любые альтернативы NSDictionary для уникальных ключей и уникальных значений? - PullRequest
4 голосов
/ 16 февраля 2010

Я сейчас нахожусь в процессе написания некоторых классов Какао для анализа тегов ID3 ​​из файлов MP3. Чтобы сделать их максимально простыми в использовании, я разрешаю опцию запрашивать тег по фактическому идентификатору кадра ID3 ("TCON", "TPE1", "TALB" и т. Д.) Или эквивалентному слову / фразе (" жанр "," исполнитель "," альбом "и т. д.)

Для хранения этих данных, в настоящее время у меня есть справочный класс, который возвращает NSDictionary с идентификаторами фреймов в качестве ключей и словами / фразами в качестве объектов. Поскольку мне нужно искать определения в обоих направлениях, в настоящее время у меня есть второй метод, который возвращает словарь «переключен», поэтому слова / фразы являются ключами.

Мой вопрос заключается в том, существует ли лучший способ представления этих данных. В идеале должно быть что-то похожее на NSDictionary, с той разницей, что и ключи, и значения должны быть уникальными, и вы можете найти как «objectForKey:», так и «keyForObject:»

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

Есть идеи? Приветствия.

1 Ответ

8 голосов
/ 16 февраля 2010

Забавно, вы должны спросить это ...

Куинн Тейлор , автор CHDataStructures Framework just добавил CHBidirectionalDictionary в структуру на прошлой неделе Это позволяет вам находить объекты по ключу и находить ключи по объектам. По сути, это обертка вокруг двух изменяемых словарей, поэтому вам гарантировано то же время поиска, что и в обычном словаре.

Единственное предупреждение: объект и ключ должны оба соответствовать протоколу NSCopying.

...