高效存储和检索字典/数组中的大量对象

时间:2015-05-26 17:25:04

标签: ios

我正在使用存储在设备上的用户完整照片集创建数据源(可能有数千个)。

对于每项资产,我需要:

  • URL
  • 纬度
  • 经度
  • 时间戳

当视图加载时,我将枚举所有资产并为每个资产存储这4个数据。我想知道安排所有这些数据的选项之间是否存在显着差异。例如:

  1. 创建1个数组,数组中的每个对象都包含一个包含4个键值对的字典。
  2. VS

    1. 创建1个数组,仅包含URL字符串。创建3个附加词典,1将每个URL字符串映射到纬度,1将每个URL字符串映射到经度,1将每个URL字符串映射到时间戳。
    2. VS

      1. 与#1相同,但不是向数组中添加字典,而是添加从NSObject子类化并包含4个属性的自定义类的实例。
      2. 创建或读取这些集合所需的时间是否存在显着差异(假设有数千个对象)?感谢。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但是最简单的方法是节省时间并且开销很低,那就是创建一个包含你想要创建的四个属性并将它们放在字典中的类。使您自己的对象保存这些信息而不是将几个数组或字典绑定在一起将在未来提供更大的灵活性。

在您对照片进行枚举时,请设置字典中的对象,并将时间戳作为键(或您想要的任何唯一属性)。您可以在O(n*(log n))中对密钥进行排序,并在O(1)时间内访问条目。然后你有一个所有图像的排序列表,它快速,可扩展,你可以在以后轻松添加更多属性。