字典和数组有什么区别?

字典和数组之间有什么区别,特别是在使用PLIST文件时? 使用其中一个的优点是什么? 谢谢!

NSDictionaryNSArray都是集合类, NSArray其他对象组合在一起。

一个NSArray是一个“有序集合” – 集合中的每个项目都有一个整数索引,所以这个项目有一个明确的顺序。 如果您交换集合中的项目顺序,则集合不再是“相同”,因为顺序不同。 一个对象可能会在集合中多次出现。

一个NSSet是一个“无序集合” – 每个项目都出现在一个包里,顺序无关紧要,一个对象只能在包里存在一次。

一个NSDictionary是一个“索引集合” – 集合中的每个项目都有一个关键字,可以用这个关键字来检索。 一个对象可能会出现不止一次,因为不同的键可能指向同一个对象,但是一个键只能出现一次。 如果你有计算机科学背景,字典也是一种“哈希表”的forms。

在parsingPLIST时,数组和字典是您处理的主要types。 当你在Xcode中编辑一个PLIST的时候 – 如果你设置了一个Arraytypes的东西,那么它所有的子项都被列为“Item 0,Item 1,Item 2 …”,而如果你将它设置为Dictionarytypes的话,孩子是关键:价值对。

差异types的一个重要用例如下。

想象一下包含许多文章的杂志应用程序。 文章的顺序是重要的,所以你会将每篇文章存储在一个数组中。 如果您想更改文章的顺序,您可以更改plist中的数组顺序。

文章本身可以用字典来表示,也许包含诸如“文本文件”,“背景”,“文章types”之类的关键字。 您可以使用字典,因为您可能会在将来的某个时间点向字典中添加更多信息,并且key:value机制使您的代码可以理解。

一个数组只是一个sorting的对象列表。 一个字典存储键值对。

例如:

 Array: obj1, obj2, ob3, ... 

字典:

 { @"Name": @"Bob" @"Age": 20 (but NSDictionary can only store objects, so that would be a NSNumber) } 

没有优点或缺点,它们只是两个数据结构,而你使用的是你需要的。

关键的区别是你如何访问他们。

数组和字典都是容器,可以顺序读取(例如,可以通过索引和字典通过键来枚举数组)。 但是,当数组保持对象之间的顺序时,字典不是。

另外,通过词典,你可以用一个更加用户友好的方式(一个助记符)来访问一个具有特定键的特定对象。 例如,在一本字典中,你可以确定用一个特定的键(比如说“text”)知道一个特定的对象,比如NSString 。 对于一个数组也是一样的,但有一些困难。 例如,你怎么确定在索引0有特定的对象NSString

关于你的问题,据我所知(自Xcode 4以来),plists有一个字典作为根对象。 有关更多信息,请参阅如何更改-pl-plist-root-object-type-to-nsarray-in-xcode-4 。

希望能帮助到你。

字典将关键字与值(对象)相关联,并且不保留项目的顺序。 数组访问是通过索引完成的 – 顺序被保留。 PLIst添加使用用XML定义数据(键,值对)的能力。

NSDictionary是有用的,你想访问一个特定的键值。 当你想访问一个seqntial数据时,NsArray是有用的。

NSDictionary不保留其“值”对象,但NSMutableArray保留添加到它的对象。 有关更多信息NSDictionary和NSArray