在我应该使用哪两个方面,我处于两难境地。我将通过一个安静的API检索一组数据(返回json),我不确定在我在UI视图表上显示它之前应该如何存储它们。
例如
{"Events":[{"Id":5,"Name":"Event 1 2013"},{"Id":6,"Name":"Event 2 2013"}]}
我一直在阅读教程,有些人会使用NSMutableArrays而有些人会使用NSMutableDictionary。
我应该怎么做?
BTW:我在UI视图表上显示数据,在点击时会将用户重定向到另一个页面,如果他们决定返回则必须显示上一个视图而不重新加载(使用UinavigationController)
谢谢!
修改
另外,只是为了让您了解我正在尝试做什么。我正在尝试按照本教程将我分成的数据拆分为节标题。在本教程中,它使用的是NSDictionary。
如果我使用NSArray,会影响性能吗?
答案 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的数组很好,因为我可以直接将行关联到索引。