【问题标题】:NSComboBox with alternative ways of writingNSComboBox 与其他书写方式
【发布时间】:2017-05-28 23:19:12
【问题描述】:

我正在尝试在一个小应用程序中实现自动完成功能。我想让用户可以将一个城市(从一长串城市)写到 NSComboBox 中。只要用户在我的城市名称数组中使用城市的确切书写方式,它就可以正常工作。但是,如果他们出于某种原因使用不同的拼写,则会失败并且找不到城市。

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

为此,我为每个城市提供了一组额外的替代拼写。

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

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

感谢您的建议,我是 NSComboBox 的新手。

【问题讨论】:

    标签: swift macos nscombobox


    【解决方案1】:

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

    考虑查找方法(匹配字符串)。为这种情况构建您的数据应该考虑每个城市的首选拼写(您首选,用于滚动列表)。

    一个扁平的城市数组怎么样(允许基于用户拼写的简单搜索,而不必检查每个可能的替代数组并正确管理它们的排序),但每个城市都有一个可选的(可以是 nil)“首选拼写”指向“正确”的指针。在组合框中显示选项时,显示由没有可选首选拼写的数组过滤的数组以及当前键入的部分/完全完成的替代拼写?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多