基于过去搜索词的历史构建自动补全



所以我在iOS搜索工作,我必须实现关键字搜索。我使用了一个嵌入了搜索显示控制器对象的自定义视图控制器。我想做的是能够在点击搜索按钮时将搜索条件存储在某个地方。我想到了两种方法:

  1. 将它们本地存储在设备中,并在执行搜索时查询它们
  2. 将它们存储在该iOS应用连接的web应用中,并在执行搜索时向web应用执行GET请求

第二个我知道怎么做,但我不知道怎么做第一个。

那么我如何在本地存储搜索项?还有,什么是更好的选择?第一个,第二个,还是另一个?

EDIT:远程API保存我要查询的数据。我想模仿谷歌搜索应用程序的功能,其中它存储可能10-20个关键字,由用户搜索。

提前感谢!

对数据和用法有了更多的了解,很难推荐。例如,关键字的数量?关键字列表是静态的还是增长的?关键词共享?你在搜索什么——本地的还是远程的?

编辑:你澄清了10 - 20个字符串。在这种情况下,考虑一些像-[NSArray writeToFile:atomically:]这样简单的东西,并只是在一个文件中持久化。如果你在NSArray中读写,你可以在内存中非常快速地处理它们。 原始:

如果你存储在本地,它是一个不断增长的动态关键字集,我建议直接CoreData或Sqlite。Sqlite是一个非常快速高效的本地数据库。如果您使用sqlite,请在github上检出fmdb。这是一个objective-c包装器。

关于利弊:

  1. 本地存储将更快-你不会有网络延迟。特别是如果你想在击键时提前输入查询。保存在内存中更快。
  2. 考虑你存储了多少数据。一共有多少个关键词?它是可行的存储在设备上的数据库或文件?
  3. 您是否希望多个用户共享关键字?在这种情况下,要么存储在服务器上,要么存储在服务器上并同步到设备。
  4. 关键字是否会根据使用情况随时间增长?在这种情况下,本地数据库更好。

最新更新