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