5

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

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

谢谢大家的帮助:)

4

3 回答 3

10

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

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

于 2013-02-01T09:41:46.473 回答
2

您希望在NSArray拥有相同类型对象的集合以及在对象NSDictionary上具有属性时使用。

如果你有,假设一个person包含 a name、 aphone number和 an的对象,email你会将它放入字典中。

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

如果您想拥有一个以上的人,则可以将人员对象放入一个数组中。

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

于 2013-02-01T09:34:13.023 回答
0

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

于 2015-11-15T13:08:11.577 回答