我在阅读Objective-C(一本书呆子牧场书),我不禁想到这个问题:我如何决定哪种集合类型,NSArray或NSDictionary(都带有或没有它们的可变子类) ,从URL中读取内容时使用?NSDictionary VS. NSArray
假设我正在阅读来自PHP脚本(正在处理的场景)的JSON数据,要使用哪个?我知道在很多参考文献中都提到它取决于数据结构(即JSON),但是可以概述两种结构的清晰轮廓?
谢谢大家的帮助:)
我在阅读Objective-C(一本书呆子牧场书),我不禁想到这个问题:我如何决定哪种集合类型,NSArray或NSDictionary(都带有或没有它们的可变子类) ,从URL中读取内容时使用?NSDictionary VS. NSArray
假设我正在阅读来自PHP脚本(正在处理的场景)的JSON数据,要使用哪个?我知道在很多参考文献中都提到它取决于数据结构(即JSON),但是可以概述两种结构的清晰轮廓?
谢谢大家的帮助:)
你想用NSArray
当过你有相同类型的对象的集合,并NSDictionary
当你有一个对象的属性。
如果有,可以说包含name
,一个phone number
和email
一个person
对象,你会把它放进一本字典。
这样做可以使值的顺序是随机的,并为您提供更可靠的代码。
如果你想拥有多于一个人,你可以将人物对象放在一个数组中。
这样做可以让您迭代用户对象。
NSArray
基本上只是一个有序的对象集合,可以通过索引访问。 NSDictionary
通过键提供对其对象的访问(通常为NSStrings,但可以是任何对象类型,如散列表)。
要从通过URL加载的JSON字符串生成对象图,您可以使用NSJSONSerialization
,它会生成一个Objective-C对象结构。结果对象取决于JSON字符串。如果您的JSON中的顶级元素是一个数组(从"["
),您将得到一个NSArray。如果顶级元素是一个JSON对象(以"{"
开头),您将获得一个NSDictionary。
“withContentOfURL”或“withContentOfFile”要求URL或文件中的数据符合Cocoa要求的特定格式。 JSON是而不是那种格式。如果您首先使用相同的数据将数据写入文件或URL,则只能使用这些方法。如果你写一个NSArray,你可以读一个NSArray。如果你写一个NSDictionary,你可以读一个NSDictionary。其他一切都会失败。
不同意 - 如果您想通过电话号码查找客户对象,该怎么办?字典中含有同质对象的原因有很多。 –
我会要求你用伪代码或示例代码来强调你的观点,以清楚你的答案 –
@CarlVeazey当然有些情况下你有特定的需求。通过使用数组,您可以创建更通用的后端,从数据库提取数据并为您创建JSON。 – EsbenB