NSDictionary的唯一键和唯一值的替代品?

时间:2010-02-15 22:32:33

标签: objective-c cocoa nsdictionary

我正在编写一些Cocoa类来解析MP3文件中的ID3标签。为了使它们尽可能易于使用,我允许选项通过实际的ID3帧ID(“TCON”,“TPE1”,“TALB”等)或等效的单词/短语(“流派“,”艺术家“,”专辑“等)

为了存储这些数据,目前我有一个引用类,它返回一个NSDictionary,其中帧id作为键,单词/短语作为对象。由于我需要在两个方向上查找定义,目前我有第二种方法返回字典'切换回',所以单词/短语是键。

我的问题是,是否有更好的方法来表示这些数据。理想情况下会有类似于NSDictionary的东西,区别在于键和值都必须是唯一的,你可以查找“objectForKey:”和“keyForObject:”

我自己可以为此编写一个类,但是我可能会失去一些来自NSDictionary文档中描述的哈希表的效率...而且我宁愿在整体实现中保持尽可能低的类数

有什么想法吗?欢呼声。

1 个答案:

答案 0 :(得分:8)

有趣的是你应该问这个......

Quinn TaylorCHDataStructures framework 的作者上周在框架中添加了CHBidirectionalDictionary。它允许您按键查找对象,并按对象查找键。它基本上是两个可变字典的包装器,因此保证与常规字典相同的查找时间。

唯一需要注意的是,对象和密钥必须两者符合NSCopying协议。