NSDictionary Vs. NSArray



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

假设我从PHP脚本中读取JSON数据(正在处理的场景),使用哪个?我知道在许多参考资料中都说它取决于数据的结构(即 JSON),但可以概述这两种结构的清晰轮廓吗?

谢谢大家的帮助:)

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

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

您希望

在具有相同类型对象的集合时使用NSArray,并且在对象上具有属性时NSDictionary

如果你有,假设一个包含namephone numberemailperson对象,你会把它放在字典中。

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

如果你想有多个人,你可以把person对象放在一个数组中。

这样做允许您迭代用户对象。

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

最新更新