【问题标题】:NSComparisonResult search part of a string?NSComparisonResult 搜索字符串的一部分?
【发布时间】:2011-01-24 22:03:36
【问题描述】:

我将 NSComparisonResult 与我的 SearchController 一起使用:

for (Annotation *ano in listContent) {
        NSComparisonResult result = [ano.title compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
        if (result == NSOrderedSame) {
            [self.filteredListContent addObject:ano];
        }
    }

如果我搜索一个字符串,它只会找到以该字符串开头的结果。

记录是“我的艺术画廊

  • 搜索“我的艺术画廊”

  • 搜索“我的”

  • 搜索“艺术”

  • 搜索“图库”

如何更改我的代码,以便可以找到上面显示的部分字符串?

【问题讨论】:

    标签: iphone objective-c ios uisearchdisplaycontroller


    【解决方案1】:

    我最终使用了 NSRange,它让我基本上可以搜索子字符串:

    for (Annotation *ano in listContent) {
    
            NSRange range = [ano.title rangeOfString:searchText options:NSCaseInsensitiveSearch];
            if (range.location != NSNotFound) {
                [self.filteredListContent addObject:ano];
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      有一种直接的方法来进行子字符串检查:

      NSComparisonResult result1 = [dummyString compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:[dummyString rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]];
      if (result1 == NSOrderedSame)
      {
       [self.filteredListContent addObject:dummyString];  // this can vary drastically 
      }
      

      注意:我将它与 UISearchDisplayController 一起使用,这对我来说非常有效。

      希望这对您将来有所帮助。

      感谢this post(更新:此链接不再有效。)

      【讨论】:

        猜你喜欢
        • 2012-07-16
        • 1970-01-01
        • 2018-04-12
        • 2023-02-02
        • 2011-08-10
        • 1970-01-01
        • 2021-06-10
        • 1970-01-01
        • 2021-06-28
        相关资源
        最近更新 更多