NSDictionary与NSArray的

时间:2013-02-01 09:31:12

标签: ios nsarray nsdictionary

我正在阅读objective-c(书呆子牧场书),我不禁想到这个问题:我如何决定哪种集合类型,NSArray或NSDictionary(两者都带有或不带有可变子类) ,从URL读取内容时使用?

假设我正在从PHP脚本(正在处理的场景)中读取JSON数据,哪些要使用?我知道在许多参考文献中都说它依赖于数据结构(即JSON),但是可以勾勒出两种结构的清晰轮廓吗?

谢谢大家的帮助:)。

3 个答案:

答案 0 :(得分:10)

NSArray基本上只是一个有序的对象集合,可以通过索引访问。
NSDictionary通过键提供对象的访问(通常是NSStrings,但可以是任何对象类型,如哈希表)。

要从通过URL加载的JSON字符串生成对象图,可以使用NSJSONSerialization生成Objective-C对象结构。生成的对象取决于JSON字符串。如果JSON中的顶级元素是一个数组(以 "[" 开头),您将获得一个NSArray。如果顶级元素是JSON对象(以 "{" 开头),您将获得一个NSDictionary。

答案 1 :(得分:2)

如果您拥有相同类型的对象的集合,则需要使用NSArray;当您拥有对象的属性时,您希望使用NSDictionary

如果有,请说出包含personnamephone number的{​​{1}}对象,您可以将其放入字典中。

这样做允许值的顺序是随机的,并为您提供更可靠的代码。

如果您想拥有多个人,则可以将人物对象放入数组中。

这样做可以让你迭代用户对象。

答案 2 :(得分:0)

" withContentOfURL"或" withContentOfFile"要求URL或文件中的数据采用Cocoa所需的特定格式。 JSON是那种格式。如果您首先使用相同的数据将数据写入文件或URL,则只能使用这些方法。如果您编写NSArray,则可以阅读NSArray。如果您编写NSDictionary,则可以阅读NSDictionary。其他一切都会失败。