【问题标题】:Search as you type for large Core-Data data set键入时搜索大型核心数据数据集
【发布时间】:2011-08-04 11:49:45
【问题描述】:

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

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

哪种方法更合适/推荐(尤其是搜索即输入)?是否有任何书籍或教程说明如何实施建议的解决方案?

【问题讨论】:

    标签: ios search core-data


    【解决方案1】:

    在几个项目中,我使用了“新获取的结果控制器”选项,因为我过滤的数据可能会耗尽旧 iPhone 中的所有内存。 FRC 可以处理内存不足的问题。 This stackoverflow answer might be helpful to you if you go ith this option

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

    【讨论】:

    • 我已经做到了——使用第二个获取结果控制器。我还没有测试它对我的原始数据集的好坏。您在这种搜索方法中使用过的最大数据集是什么?我的目标是第一代 iPad。
    • ~5000 个实体,但最大的性能问题是您的搜索谓词是什么样的(我的有一堆字符串比较和 SUBQUERY,因此有时会很慢)。
    【解决方案2】:

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

    然后,当我进入搜索表视图时,我会搜索预加载的数据。每次都执行一次获取会导致太多的延迟——即使使用编写良好的谓词和获取的结果控制器也是如此。我发现手动操作要快得多,因为我可以创建数据子集以加快搜索速度。

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

    干杯,

    迈克尔

    【讨论】:

    • 我不明白您所说的创建数据子集是什么意思?我正在使用 iOS,我没有将完整的数据集加载到内存中的奢侈。 fetched results controller 是我最好的选择!
    猜你喜欢
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2011-10-05
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多