UISearchbar结果过滤

时间:2011-02-07 16:42:55

标签: iphone objective-c cocoa-touch uisearchbar

我有一个UISearchBar,用户可以在其中键入文本。基本上它是一个动态的公司名称搜索。 (从ext API加载)例如如果用户输入了“MIC”,它将显示AMIC,BMIC,CMIC,...... MICROSOFT。

我正在使用以下代码

NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

我的问题是;  1.这是过滤的最佳方法吗?即对于comp名称,我应该使用名称以OR名称包含,这是当前的方法。  2.搜索不适用于空格。例如它不会返回“COMP NAME”

的结果

我会在获得答案时添加其他信息的评论。 请建议。

1 个答案:

答案 0 :(得分:1)

只有一行代码可以继续,很难判断您的搜索实现是否是“最佳方法” - 提供其他信息会很有帮助。例如,我们甚至不知道sTemp变量的来源或包含的内容。

那说:

  1. 如果您的结果确实来自外部API,它可能会为您提供加速,以便将搜索字符串发送到该API并使其更接近数据源进行搜索 - 让您缓存并对您执行字符串扫描随着数据集大小的增加,整个结果集将显示一些性能下降。但是,如果你打算在本地进行搜索,那么是的,不区分大小写的搜索可能是你最好的选择。
  2. 您是否期望“COMP NAME”的结果?我将疯狂地假设您有一个名为“公司名称”的公司,并希望您的缩写“COMP NAME”搜索点击“公司名称”。那么你的问题是你在整个字符串上进行比较,而不是它的一部分 - “公司名称”不包含子串“COMP NAME”,即使在不区分大小写的比较中也是如此。您需要做的是将搜索字符串拆分为空格,然后检查每个公司名称是否包含 all 查询的子字符串。在此示例中,“COMPANY NAME”包含子串“COMP”和“NAME”,因此它将匹配。