1

我正在尝试实现一种快速搜索的输入机制。

在我目前的实现中,当用户第一次启动应用程序时,他必须稍等片刻才能完成下载过程。在此期间,正在下载有关该应用销售的 20,000 种产品的信息。每个产品都由 NSManagedObject 的一个实例表示,并被添加到 Core Data 数据库中。

真正的问题是使用这些产品的方式。用户再次启动应用程序后(不是第一次),需要将产品加载到内存中,以便快速搜索。为了做到这一点,我遍历整个数据库并为每个包含其信息的产品创建一个 NSDictionary 实例,因为在我的程序中使用字典对象来检索有关产品的信息要容易得多。

因为字典存储在内存中,因此搜索过程非常快,但是迭代 20,000 个对象(每次启动一次)和创建字典需要很长时间(大约一分钟),所以这个解决方案并不好。

我想到了另一种实现快速搜索目标的方法:在输入每个字母后从数据库中获取对象。但我不知道它会有多快。

推荐的方法是什么?

谢谢, Sagiftw

4

1 回答 1

2

我的应用程序中有类似的功能,但记录要少得多。我在所有搜索字段上都有索引,并从输入中创建尽可能简单(便宜)的 sql 查询(NSPredicate)(第二个 fetchedResultsController 仅用于搜索)。结果集包含“搜索项”。对于文本类型搜索键随机分布的大约 1000 个条目(测试数据大小),这至少足够快。在后台获取以防止 gui 无响应可能是一个好主意。

于 2012-04-13T09:14:54.577 回答