字典和数组之间有什么区别,特别是使用PLIST文件时?使用其中一个的优点是什么?谢谢!字典和数组有什么区别?
回答
NSDictionary
和NSArray
都是集合类,即将其他对象组在一起。
NSArray是一个'有序集合' - 集合中的每个项目都有一个整数索引,所以有一个明确的项目顺序。如果您交换集合中的项目顺序,那么集合不再是与订单不同的“相同”。一个对象可能会在集合中多次出现。
一个NSSet是一个'无序集合' - 每个项目出现在一个包里,顺序无关紧要,一个对象只能在包里存在一次。
NSDictionary是一个'索引集合' - 集合中的每个项目都有一个关键字,并且可以使用该关键字进行检索。一个对象可能会出现多次,因为不同的键可能指向同一个对象,但一个键只能出现一次。如果您拥有计算机科学背景,字典也是“哈希表”的一种形式。
解析PLIST时,数组和字典是您处理的主要类型。当你在Xcode中编辑一个PLIST时 - 如果你设置了一个Array类型的东西,那么它的所有子节点都被列为“Item 0,Item 1,Item 2 ...”,而如果你将它设置为Dictionary类型,那么它就是孩子是关键:价值对。
差异类型的一个重要用例如下。
想象一下包含许多文章的杂志应用程序。文章的顺序很重要,因此您可以将每篇文章存储在一个数组中。如果您想更改文章的顺序,您可以更改plist中的数组顺序。
这些文章本身可能由字典表示,可能包含诸如“TextFile”,“Background”,“ArticleType”之类的关键字。您使用字典是因为您可能会在将来的某个时间点向字典中添加更多信息,并且key:value机制使您的代码易于理解。
数组只是对象的排序列表。字典存储键值对。
例如:
Array: obj1, obj2, ob3, ...
词典:
{
@"Name": @"Bob"
@"Age": 20 (but NSDictionary can only store objects, so that would be a NSNumber)
}
有没有优点或缺点,他们只是两个数据结构,并使用一个你需要的。
字典将关键字与值(对象)关联,并且不保留项目的顺序。数组访问通过索引完成 - 订单被保留。 PLIst添加使用用途XML来定义数据(键,值对)的能力。
NSDictionary不保留其'值'对象,但NSMutableArray保留添加到它的对象。欲了解更多信息NSDictionary和NSArray
这是不正确的 - NSDictionary保留它的值,但不是它的键。 – ikuramedia 2013-07-26 00:24:59
关键的区别是你如何访问他们。
数组和字典都是容器,可以依次读取(例如,可以通过索引和字典通过键来枚举数组)。但是,当数组维持对象之间的顺序时,字典不是。
此外,通过字典,您可以使用特定键以更友好的方式访问特定对象(助记符)。例如,在字典中,您肯定知道使用特定键(例如“text”)与特定对象关联,例如NSString
。对于阵列也是一样,但有一些困难。例如,你如何确定在索引0处有特定对象NSString
?
关于你的问题,据我所知(自Xcode 4以来),plists有一个字典作为根对象。详情请参阅how-do-you-change-a-plists-root-object-type-to-nsarray-in-xcode-4。
希望它有帮助。
NSDictionary是非常有用的,你想访问一个特定的键值。 当你想访问一个sequntial数据时,NsArray很有用。
- 1. IEnumerable和数组有什么区别?
- 2. int和char数组有什么区别?
- 3. malloc和数组有什么区别
- 4. 数组和ArrayList有什么区别?
- 5. 数组和散列有什么区别?
- 6. 模式和数据字典有什么区别?
- 7. Smalltalk中的数组和字面数组有什么区别?
- 8. 字符串和Javascript中的字符数组有什么区别?
- 9. 在asp.net中使用viewData字典和viewData.Model有什么区别mvc
- 10. 方法字典和dictionaryWithCapacity有什么区别?
- 11. 初始化字典和在Swift中声明有什么区别?
- 12. 十六进制和字符数组打印有什么区别?
- 13. CPU和芯片组有什么区别?
- 14. 元组和compress_pair有什么区别?
- 15. 组件和指令有什么区别?
- 16. 组件和凉亭有什么区别?
- 17. NumPy数组和简单Python数组有什么区别?
- 18. 数组地址和数组本身有什么区别吗?
- 19. 原始数组和引用数组之间有什么区别?
- 20. 嵌套数组和关联数组有什么区别?
- 21. 这两个数组有什么区别?
- 22. 数组与对象有什么区别?
- 23. IPAddress.Any和IPAddress.IPv6Any字段有什么区别?
- 24. 有什么区别`和$(Bash中有什么区别?
- 25. 有什么区别? :和||
- 26. &&和||有什么区别?
- 27. “/”和“/ *”有什么区别?
- 28. 有什么区别:。!和:r!?
- 29. ==和===有什么区别?
- 30. Appender和〜有什么区别?
非常感谢您解释这个!它确实有帮助。 – 2012-02-23 16:06:52
谢谢。这节省了我的时间。 – Raja 2017-10-23 05:46:46