【问题标题】:What's the difference between a dictionary and an array?字典和数组有什么区别?
【发布时间】:2012-03-14 00:51:18
【问题描述】:

字典和数组有什么区别,尤其是在处理 PLIST 文件时?使用一个比另一个有什么优势?谢谢!

【问题讨论】:

    标签: objective-c ios nsarray plist nsdictionary


    【解决方案1】:

    NSDictionary 在您想要访问特定键值时很有用。 NsArray 在您想要访问顺序数据时很有用。

    【讨论】:

      【解决方案2】:

      关键区别在于您如何在其中访问。

      数组和字典都是容器,可以按顺序读取(例如,数组可以通过索引枚举,字典可以通过键枚举)。但是,虽然数组保持对象之间的顺序,但字典不会。

      此外,通过字典,您可以以更用户友好的方式(助记符)使用特定键访问特定对象。例如,在字典中,您确定使用特定键(例如“文本”)与特定对象(例如 NSString)相关联。这同样适用于数组,但有一些困难。例如,您如何确定在索引 0 处存在特定对象 NSString

      关于您的问题,据我所知(自 Xcode 4 起),plist 将字典作为根对象。如需更多信息,请参阅how-do-you-change-a-plists-root-object-type-to-nsarray-in-xcode-4

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        NSDictionary 不保留其“值”对象,但 NSMutableArray 保留添加到其中的对象。更多信息NSDictionaryNSArray

        【讨论】:

        • 这是不正确的 - NSDictionary 保留它的值,但不保留它的键。
        【解决方案4】:

        NSDictionaryNSArray 都是集合类,即将其他对象组合在一起。

        NSArray 是一个“有序集合”——集合中的每个项目都有一个整数索引,因此项目有一个明确的顺序。如果您交换集合中项目的顺序,则集合不再“相同”,因为顺序不同。一个对象可能在集合中出现多次。

        NSSet 是一个“无序集合” - 每个项目都出现在一个包中,顺序无关紧要,一个对象只能在包中存在一次。

        NSDictionary 是一个“索引集合” - 集合中的每个项目都有一个键,并且可以使用该键检索。一个对象可能出现不止一次,因为不同的键可能指向同一个对象,但一个键只能出现一次。如果您有计算机科学背景,字典也是“哈希表”的一种形式。

        在解析 PLIST 时,数组和字典是您处理的主要类型。当您在 Xcode 中编辑 PLIST 时 - 如果您将某些内容设置为 Array 类型,那么它的所有子项都被列为“Item 0, Item 1, Item 2...”,而如果您将其设置为 Dictionary 类型,那么它就是孩子是键:值对。

        不同类型的一个重要用例如下。

        想象一个包含许多文章的杂志应用程序。文章的顺序很重要,因此您可以将每篇文章存储在一个数组中。如果你想改变文章的顺序,你可以改变plist中数组的顺序。

        文章本身可能由字典表示,可能包含诸如“TextFile”、“Background”、“ArticleType”之类的键。您使用字典是因为您可能会在将来的某个时间向字典添加更多信息,并且键:值机制使您的代码易于理解。

        【讨论】:

        • 非常感谢您的解释!真的很有帮助。
        • 谢谢。它节省了我的时间。
        【解决方案5】:

        数组只是对象的排序列表。字典存储键值对。

        例如:

        Array: obj1, obj2, ob3, ...
        

        字典:

        {
        
            @"Name": @"Bob"
        
            @"Age": 20 (but NSDictionary can only store objects, so that would be a NSNumber)
        
        }
        

        没有优点或缺点,它们只是两种数据结构,你使用你需要的。

        【讨论】:

          【解决方案6】:

          字典将键与值(对象)相关联,并且不保留项目的顺序。数组访问由索引完成 - 保留顺序。 PLIst 添加使用 XML 定义数据(键、值对)的能力。

          【讨论】:

            猜你喜欢
            • 2021-02-10
            • 1970-01-01
            • 2011-02-22
            • 2012-04-03
            • 2014-06-27
            • 1970-01-01
            • 1970-01-01
            • 2021-02-14
            • 2017-12-30
            相关资源
            最近更新 更多