在plist中表示无序数据的最佳方法

时间:2014-05-28 18:34:15

标签: ios cocoa-touch plist

我正在制作一个持有genre synonyms的plist。给定类型的同义词列表没有任何固有的顺序。

我应该使用一个数组(这意味着一个不存在的顺序)还是一个字典(这意味着每个键都有一个相应的值,不存在)。

简单地说 - 将无序集合存储在plist中,我该如何表示它以及为什么?

(澄清一下:如果Set编辑器中有plist数据结构,我会使用它,但我只有ArrayDictionary可供选择。)


更多细节:我将通过该类型的主要表示来查找,因此plist中的外部数据结构必须是字典。

但是对于同义词,唯一必要的操作是使用块枚举它们。

所以无论是数组还是字典都可以。但是,我担心使用数组会暗示一个没有任何语义含义的命令。另一方面,plist中的字典是否经常出现没有相应的值?


再次编辑以回应Josh的评论:

我喜欢你在阅读plist后转换成NSSet的想法。但是,我仍然可以用字典做到这一点,对吗?所以不确定为什么阵列是明显的选择。

如果其他人编辑了plist,他们可能会认为订单有意义,而实际上,订购是任意的。


惊讶没有人使用字典而不是数组进行辩护。为此目的,是否有理由不在plist中使用字典?

3 个答案:

答案 0 :(得分:2)

我会使用一个数组,因为你说没有字典条目的相应键。

同时,如果您在plist文件(www)中输入大量条目,您的手指可能会厌倦处理原始XML或plist编辑器的东西。您可能想要考虑另一种保存同义词的方法吗?

答案 1 :(得分:2)

如果您不关心订单,那么您从构建数组获得的任意顺序等同于您使用集合获得的任意顺序。阅读后,您还可以非常轻松地将plist中的数组转换为NSSet+[NSSet setWithArray:]

所以使用数组。

答案 2 :(得分:0)

如果不需要按项目查找,请使用NSArray。如果需要查找,请使用NSDictionary