在iOS中实现自动完成function

我正在创建一个应用程序,当用户输入文本输入时,我需要实现自动完成,其中10个最近/最高排名的单词出现在文本字段下方。

我已经获得了一个相当大的列表,其中包含大约80,000个单词及其各自的“优先级” – 这个数字决定了它们在自动完成中出现的高度,具体取决于数字的大小,如下所示:

"transport international";19205 "taxi";18462 "location de voitures";18160 "police";18126 "formation";17858 

我对iOS开发有点新意,并且想知道最好的方法是什么 – 我应该将80,000个短语拆分成更小的文件,还是只保留一个? 什么会更快?

我已经看到在iOS的一个例子中使用了自动完成,但是它提供了非常少量的建议 – 我之前没有看到使用过这么大的文件,显然我想尽可能快地添加用户经验。

任何有关示例,教程或代码建议的建议都将非常感谢,谢谢。

您可能想要使用此repo HTAutocompleteTextField ,完美的解决方案。

如果您喜欢自动完成但是UITextField的直接子类,那么您可能会对MLPAutoCompleteTextField感兴趣。

MLPAutoCompleteTextField的工作原理是,每次文本字段中的文本发生更改时,只需向自动完成数据源询问一系列自动完成建议。 它甚至可以自动对单词进行排序,以便最接近用户键入的单词将显示在自动完成列表的顶部(使用Levenshtein距离算法)。 自动填充建议可以是简单的字符串,也可以是实现MLPAutoCompletionObject协议的对象。

提示:对于自动填充术语的大型数据集,您可能希望根据起始字母分解列表。 (示例:当用户输入字母F时,您只为自动填充文本字段提供以F开头的单词列表。)

MLPAutoCompleteTextField可以在合理的时间内有效地对数千个建议进行排序,并且在排序时永远不会阻止UI。

目前,加权建议(覆盖默认排序)是不可能的,但它是一个计划的function。

https://github.com/TarasRoshko/TRAutocompleteView

只需符合TRAutocompleteItemsSource协议即可。 协议的设计考虑了异步支持。 演示应用程序和示例TRGoogleMapsAutocompleteItemsSource应该会帮助您。

这个链接对我很有用。 根据您的代码,不要错过UITextFieldUITextView之间的区别。

没有额外的库,只需一个简单的自定义UITableView和搜索function。