2011-04-13 114 views
3

我有一个大型核心数据数据集,我想添加搜索支持。目前我正在使用抓取的结果控制器在uitableview中显示数据。我正在计划使用UISearchDisplayController。现在我有两个选择:在您键入大型核心数据数据集时搜索

  1. 创建一个新的获取结果控制器搜索到的数据
  2. 使用数组来显示过滤的数据

哪种方法更合适/推荐(特别是搜索 - 作为你型)?是否有任何书或教程解决如何实施建议的解决方案?

回答

2

在几个项目中,我用“新获取的成果控制器”选项去,因为我可能是过滤数据可以吃了所有的RAM的较旧的iPhone。 FRC可以处理低内存问题。 This stackoverflow answer might be helpful to you if you go ith this option

您的数据是否足够小以适应最低公分母(第1代iPhone)的可用内存?如果是这样,那么只需使用NSArray过滤内存。性能方面,这将比使用FRC更快。

+0

我已经完成了 - 使用第二次提取的结果控制器。我还没有测试它与我的原始数据集有什么关系。这种搜索方法使用的最大数据集是什么?我的目标是针对第一代iPad。 – Mustafa 2011-04-14 09:33:30

+0

〜5000个实体,但性能最大的问题将是你的搜索谓词看起来像(我有一堆字符串比较和SUBQUERYs,所以它可能有点慢)。 – 2011-04-14 16:47:11

1

数据是否不断被写入?我有一组1200个记录,通过“包含”搜索进行搜索。我所做的是在应用程序启动时有一个包含基于coredata存储的所有数据集的对象。如果数据在应用程序使用过程中得到更新 - 重新构建这些集合。

然后,当我到达搜索表视图时,我通过预先加载的数据进行搜索。每次做取指操作都会造成太多的延迟 - 即使写得好的谓词和取得的结果控制器也是如此。我发现手动操作要快得多,因为我可以创建数据的子集以加快搜索速度。

希望这有助于您作出决定。

干杯,

迈克尔

+0

我不明白你的意思是通过创建数据子集?我正在与iOS合作,而且我没有奢侈的将完整的数据集加载到内存中。提取结果控制器是我最好的选择! – Mustafa 2011-04-13 10:01:59