NSComboBox具有替代写作方式

时间:2017-05-28 14:50:39

标签: swift macos nscombobox

我正在尝试将自动完成功能实现到一个小应用中。我想让用户可以将一个城市(从很长的城市列表中)写入NSComboBox。只要用户在我的城市名称数组中使用城市的精确书写,这样就可以了。但是,如果他们出于某种原因使用不同的拼写,它就会失败而且找不到城市。

因此,如果用户正在寻找“Köln”,这不是问题,但如果他正在寻找“科隆”,他将无法找到它。

为此,我为每个城市增加了一系列替代拼写。

现在我希望NSComboBox(或任何其他类型的TextField)不仅可以在“city.name”中查找,还可以在数组“city.alternativeNames”中查找。显示的值也应该代表用户正在编写的内容。

我不想在每个替代名称的NSComboBox弹出部分列表中创建一个条目,因为这会使列表比它更长并且会让人感到困惑(仅科隆就有85种不同的拼写)。

感谢您的建议,我对NSComboBox完全陌生。

1 个答案:

答案 0 :(得分:1)

有趣的问题。我想您可能需要选择不同的方式来构建数据以使其更容易。

考虑查找方法(匹配字符串)。为此案例构建数据应考虑每个城市的首选拼写(您首选的滚动列表)。

平面城市阵列如何(允许基于用户拼写进行简单搜索,而无需检查每个可能的替代阵列并管理正确排序)但每个城市都有一个可选的(可以是零)“首选拼写”指向“正确”的指针。在组合框中显示选项时,显示由没有可选首选拼写的人筛选的数组加上备用拼写的当前键入的部分/完全完成?

因此City具有name属性和可选的preferred属性。在您的情况下,如果首选科隆,Köln实例将科隆设置为首选。如果用户输入Köln(甚至部分),它只会出现在列表中,并且它会自动处于正确的alpha排序位置(假设您的城市保持排序)。

这是否有意义还是我需要改写?今天早上没有喝足够的咖啡。 : - )