字典和数组之间有什么区别,特别是在使用PLIST文件时?使用一个优于另一个有什么好处?谢谢!
答案 0 :(得分:32)
NSDictionary
和NSArray
都是集合类,即将其他对象组合在一起。
NSArray是一个有序的集合' - 集合中的每个项目都有一个整数索引,因此对项目有明确的顺序。如果你交换集合中的项目顺序,那么集合不再是相同的'因为订单不同。对象可能在集合中出现多次。
NSSet是一个无序的集合' - 每件物品都放在一个袋子里,订单无关紧要,一件物品只能放在袋子里一次。
NSDictionary是一个索引的集合' - 集合中的每个项目都有一个密钥,可以使用该密钥检索。一个对象可能出现不止一次,因为不同的键可能指向同一个对象,但一个键只能出现一次。字典也是一种“哈希表”的形式。如果你有计算机科学背景。
解析PLIST时,Arrays和Dictionaries是您处理的主要类型。当您在Xcode中编辑PLIST时 - 如果您将某些内容设置为数组类型,那么它的所有子项都会列为"项目0,项目1,项目2 ..."而如果你把它设置为字典类型,那么它的子节点是关键:值对。
差异类型的一个重要用例如下。
想象一下杂志申请,其中包含许多文章。文章的顺序很重要,因此您可以将每篇文章存储在一个数组中。如果要更改文章的顺序,可以更改plist中数组的顺序。
文章本身可以由字典表示,可能包含诸如" TextFile","背景"," ArticleType"等键。您使用Dictionary是因为您可以在将来的某个时刻向字典添加更多信息,而key:value机制使您的代码可以理解。
答案 1 :(得分:4)
数组只是一个排序的对象列表。字典存储键值对。
例如:
Array: obj1, obj2, ob3, ...
字典:
{
@"Name": @"Bob"
@"Age": 20 (but NSDictionary can only store objects, so that would be a NSNumber)
}
没有任何优点或缺点,它们只是两种数据结构,您可以使用所需的数据结构。
答案 2 :(得分:4)
关键区别在于如何在其中进行访问。
数组和字典都是容器,可以随后读取(例如,可以通过索引和字典通过键来枚举数组)。但是当数组维持对象之间的顺序时,字典不是。
此外,使用词典,您可以以更加用户友好的方式(一个助记符)访问具有特定键的特定对象。例如,在字典中,您确定使用特定键(例如“text”)与特定对象相关联,例如NSString
。同样可能对阵列有效,但有一些困难。例如,您如何确定在索引0处有特定对象NSString
?
关于你的问题,据我所知(从Xcode 4开始),plists将根对象作为字典。有关详细信息,请参阅how-do-you-change-a-plists-root-object-type-to-nsarray-in-xcode-4。
希望它有所帮助。
答案 3 :(得分:2)
词典将键与值(对象)相关联,并且不保留项目的顺序。数组访问由索引完成 - 保留顺序。 PLIst添加能力使用XML来定义数据(键,值对)。
答案 4 :(得分:-1)
当您想要访问特定键值时,NSDictionary非常有用。 当您想要访问顺序数据时,NsArray非常有用。
答案 5 :(得分:-2)
NSDictionary不会保留其“值”对象,但NSMutableArray会保留添加到其中的对象。有关详细信息NSDictionary和NSArray