增量搜索我有很多本地存储的数据(10000+数据记录)(没有决定如何,但 - 这是问题的一部分)我如何可以实现这一数据增量搜索上实现对iphone
(一个特定的领域)?
我该如何在本地设置数据?
XML? PLIST? SQLite的?
我应该使用核心数据进行访问吗?
增量搜索我有很多本地存储的数据(10000+数据记录)(没有决定如何,但 - 这是问题的一部分)我如何可以实现这一数据增量搜索上实现对iphone
(一个特定的领域)?
我该如何在本地设置数据?
XML? PLIST? SQLite的?
我应该使用核心数据进行访问吗?
您可能想要使用Core Data,如果记录之间存在任何类型的关系,您当然可以这样做。如果没有Core Data来管理关系,应用程序的复杂性可能会雪上加霜。
这是一种常见的误解,因为Core Data自动处理很多复杂性,因此必须在性能上进行不可避免的折衷,因此尽管Core Data可能易于实现,但它必须是最慢的解决方案。事实证明,这通常不是这种情况,因为苹果在引擎盖下做了大量的调整。对于大多数使用情况来说,编写最适合Core Data的解决方案是相当困难的。
我建议你从最简单的核心数据解决方案开始,然后只有在测试简单解决方案并发现它变慢时才会变得更复杂。我会从一个强力获取开始,看看它是否足够快。下一步的工作就是在实体的单个属性上进行提取,例如Person
实体的name
属性,然后仅在需要时才提取整个实体。如果这仍然很慢,你将不得不考虑在实体图中实现某种树结构(这并不困难)。
不成熟的优化是万恶之源。如果没有测试产生的数据,不要尝试做出优化决定。长远来看,你会浪费更多时间。只有在绝对必要时才开始简单并增加复杂性。
10K记录不算太坏。确保您设置获取批量大小。例如,如果在iPhone上,在任何时候只有10行可见,所以批量为10是有意义的。另外 - 这对于实现可观的速度是绝对必要的 - 确保在数据模型检查器中为核心数据模型中相应的字段设置复选框“索引”。
如果数据集增加,那么您可能希望考虑更好的解决方案。请参阅维基百科上的"Directed acyclic word graph"。
如果你确实去了,你可以在Sourceforge找到一些实现代码。它是C++,但可以将Objective C .m文件重命名为.mm,并包含任何C++代码。