在 iphone 上实现增量搜索

Posted

技术标签:

【中文标题】在 iphone 上实现增量搜索【英文标题】:Implementing incremental search on iphone 【发布时间】:2010-09-15 05:37:06 【问题描述】:

我在本地存储了大量数据(10000 多条数据记录)(尚未决定如何使用 - 这是问题的一部分)

如何对这些数据(特定字段)实施增量搜索?

我应该如何在本地设置数据? XML?列表? sqlite?

我应该使用 Core Data 进行访问吗?

【问题讨论】:

【参考方案1】:

10K 记录还不错。确保您设置了获取批量大小。例如,如果在 iPhone 上任何时候可能只有 10 行可见,那么批量大小为 10 是有意义的。此外 - 这对于实现不错的速度绝对必要 - 请务必在数据模型检查器中为核心数据模型中的相应字段设置“索引”复选框。

如果数据集增加,那么您可能希望考虑一个更好的解决方案。请参阅***上的"Directed acyclic word graph"。

如果你这样做,你可以在Sourceforge 上找到一些实现代码。它是 C++,但您可以将 Objective C .m 文件重命名为 .mm,并包含任何 C++ 代码。

【讨论】:

【参考方案2】:

您可能想要使用 Core Data,如果记录之间存在任何类型的关系,您肯定会这样做。如果没有 Core Data 来管理关系,应用程序的复杂性会滚雪球。

一种常见的误解是,由于 Core Data 会自动处理大量复杂性,因此必须在性能上进行不可避免的权衡,尽管 Core Data 可能很容易实现,但它必须是最慢的解决方案。事实证明,情况通常并非如此,因为苹果在后台进行了大量调整。对于大多数用例来说,手写一个最适合 Core Data 的解决方案是相当困难的。

我建议您从最简单的 Core Data 解决方案开始,然后只有在您测试简单的解决方案并发现它运行缓慢时才变得更复杂。我会从蛮力获取开始,看看是否足够快。下一步将是仅对实体的单个属性进行获取,例如Person 实体的 name 属性,然后仅在需要时获取整个实体。如果这仍然很慢,您将不得不考虑在实体图中实现某种树结构(这并不难。)

过早的优化是万恶之源。不要试图在没有测试产生的数据的情况下做出优化决策。从长远来看,你会浪费更多的时间。从简单开始,仅在绝对必要时增加复杂性。

【讨论】:

以上是关于在 iphone 上实现增量搜索的主要内容,如果未能解决你的问题,请参考以下文章

在自定义视图/uiview 子类上实现 iphone 的复制/粘贴控件

有没有办法在 iPhone 的离线 openstreetmaps sqlite 地图瓦片数据库上实现离线地理编码?

如何在 iOS 11 和 iPhone X 上实现隐藏 UITabBar 以显示 UIToolbar

使用 iPhone 应用程序自动重拨

iPhone上的uibarbutton和popoverview

微信搜索新发现:iPhone 内存不足看这里!