【问题标题】:NSDictionary Vs. NSArrayNSDictionary 与。 NSArray
【发布时间】:2013-02-01 09:31:12
【问题描述】:

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

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

感谢大家的帮助:)

【问题讨论】:

    标签: ios nsarray nsdictionary


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      当您拥有相同类型对象的集合时,您想使用NSArray,当您拥有对象的属性时,您想使用NSDictionary

      如果你有,假设一个包含namephone numberemailperson 对象,你可以将其放入字典中。

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

      如果您想要多于一个人,您可以将人员对象放入一个数组中。

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

      【讨论】:

      • 不同意 - 如果您想通过电话号码查找 Customer 对象怎么办?字典包含同质对象有很多正当理由。
      • 我会要求您用伪代码或示例代码突出您的观点,以明确您的答案
      • @CarlVeazey 当然在某些情况下您有特定的需求。通过使用数组,您可以创建一个更通用的后端,它可以从数据库中提取数据并为您创建 JSON。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-03-10
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多