objective c何时使用NSDictionary而不是NSArray

时间:2013-01-24 03:59:57

标签: ios objective-c xcode nsmutablearray nsmutabledictionary

在我应该使用哪两个方面,我处于两难境地。我将通过一个安静的API检索一组数据(返回json),我不确定在我在UI视图表上显示它之前应该如何存储它们。

例如

{"Events":[{"Id":5,"Name":"Event 1 2013"},{"Id":6,"Name":"Event 2 2013"}]}

我一直在阅读教程,有些人会使用NSMutableArrays而有些人会使用NSMutableDictionary。

我应该怎么做?

BTW:我在UI视图表上显示数据,在点击时会将用户重定向到另一个页面,如果他们决定返回则必须显示上一个视图而不重新加载(使用UinavigationController)

谢谢!

修改

另外,只是为了让您了解我正在尝试做什么。我正在尝试按照本教程将我分成的数据拆分为节标题。在本教程中,它使用的是NSDictionary。

http://www.icodeblog.com/2010/12/10/implementing-uitableview-sections-from-an-nsarray-of-nsdictionary-objects/

如果我使用NSArray,会影响性能吗?

4 个答案:

答案 0 :(得分:5)

在NSArray中 - 集合中的每个项目都有一个整数索引,因此对项目有明确的顺序。当您从NSARRY中检索/替换/删除存储的对象时,您需要指定该存储对象的相应对象索引。

NSDictionary - 源自名为entry的词。每个条目包含一个表示键的对象和另一个作为键值的对象。在字典中,键是唯一的。也就是说,单个字典中没有两个键是相等的(由isEqual确定:)。当您从字典中检索对象时,您需要指定objectForKey的键值。 无论何时如果您正在解析plist,那么NSDictionary将是理想的。您可以参考apple's document here获取有关NSDictionary.Happy编码的更多解释:)

答案 1 :(得分:3)

NSDictionaries上的查找时间比NSArrays上的查询时间快。这是主要优势之一。这是Apple文档的link

答案 2 :(得分:1)

通常,如果您需要以索引方式访问数据(就像表格中的行所需),那么您应该使用数组,因为您可以使用indexOfObject:访问任何特定索引

现在,如果每行有很多信息,那么你应该有一个自定义对象或一组字典的数组。

答案 3 :(得分:1)

字典总是比数组更快。字典将键映射到对象,就像哈希表一样。它是一个关联数组。

要搜索某些值,您需要迭代数组,在字典中按键检索它。

如果您希望集合处于某个排序顺序或到达顺序,那么Array是适合您的类型。

当你最终获得两个相同的密钥时,字典缺乏。

我觉得使用tableViews的数组很好,因为我可以直接将行关联到索引。