我正在阅读objective-c(一本书呆子牧场书),我不禁思考这个问题:我如何决定使用哪种集合类型,NSArray 或 NSDictionary(带有或不带有可变子类)从 URL 读取内容时?
假设我正在从 PHP 脚本(正在处理的场景)读取 JSON 数据,使用哪个?我知道在许多参考资料中都指出它取决于数据结构(即 JSON),但是可以概述这两种结构的清晰轮廓吗?
谢谢大家的帮助:)
我正在阅读objective-c(一本书呆子牧场书),我不禁思考这个问题:我如何决定使用哪种集合类型,NSArray 或 NSDictionary(带有或不带有可变子类)从 URL 读取内容时?
假设我正在从 PHP 脚本(正在处理的场景)读取 JSON 数据,使用哪个?我知道在许多参考资料中都指出它取决于数据结构(即 JSON),但是可以概述这两种结构的清晰轮廓吗?
谢谢大家的帮助:)
NSArray
基本上只是一个有序的对象集合,可以通过索引访问。
NSDictionary
通过键提供对其对象的访问(通常是 NSStrings,但可以是任何对象类型,如哈希表)。
要从通过 URL 加载的 JSON 字符串生成对象图,请使用NSJSONSerialization
,它会生成一个 Objective-C 对象结构。结果对象取决于 JSON 字符串。如果您的 JSON 中的顶级元素是一个数组(以 开头"["
),您将获得一个 NSArray。如果顶级元素是 JSON 对象(以 开头"{"
),您将获得一个 NSDictionary。
您希望在NSArray
拥有相同类型对象的集合以及在对象NSDictionary
上具有属性时使用。
如果你有,假设一个person
包含 a name
、 aphone number
和 an的对象,email
你会将它放入字典中。
这样做允许值的顺序是随机的,并为您提供更可靠的代码。
如果您想拥有一个以上的人,则可以将人员对象放入一个数组中。
这样做允许您迭代用户对象。
“withContentOfURL”或“withContentOfFile”要求 URL 或文件中的数据采用 Cocoa 要求的特定格式。JSON不是那种格式。如果您首先使用相同的数据将数据写入文件或 URL,则只能使用这些方法。如果你写一个 NSArray,你可以读一个 NSArray。如果你写一个 NSDictionary,你可以读一个 NSDictionary。其他一切都会失败。