在iphone上实现增量搜索

时间:2010-09-15 05:37:06

标签: iphone cocoa-touch ipad core-data

我有很多本地存储的数据(10000多条数据记录)(尚未决定 - 这是问题的一部分)

如何对此数据(在特定字段上)实施增量搜索?

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

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

2 个答案:

答案 0 :(得分:1)

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

如果数据集增加,那么您可能希望考虑更高级的解决方案。请参阅维基百科上的"Directed acyclic word graph"

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

答案 1 :(得分:0)

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

一种常见的误解是,由于Core Data自动处理大量复杂性,因此必须在性能上进行不可避免的权衡,以便尽管Core Data易于实现,但它必须是最慢的解决方案。事实证明,通常情况并非如此,因为苹果公司已经做了大量的调整。在大多数用例中,很难为最佳Core Data编写解决方案。

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

过早优化是万恶之源。如果没有测试生成的数据,请不要尝试做出优化决策。从长远来看,你会浪费更多的时间。只有在绝对必要时才开始简单并增加复杂性。