【问题标题】:UISearchBar textDidChange, searchtext variable unusable with rangeOfString?UISearchBar textDidChange,searchtext 变量不能与 rangeOfString 一起使用?
【发布时间】:2016-06-15 14:04:40
【问题描述】:

我已经搜索了几个小时,但没有看到任何解决方案...我正在使用输入到 UISearchBar 中的文本过滤一组自定义对象,以更改下面表格视图中的数据。 经过一番调试,ive pin 指出了我的问题的根源:

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
    var temp = "c"
    FilterResults = SearchResults.filter {
    return $0.Username.rangeOfString(temp) != nil
    }

    }

这是我的麻烦:如果我使用了上面明确定义的 temp,其中 temp = "c",它会很高兴地匹配所有包含 c 的用户名!当我使用变量 searchText 而不是使用 temp 时,就会出现问题,在这种情况下,它永远不会与任何东西匹配!我检查了 searchText 不为空,实际上我在测试中打印出了 searchText 并且它打印出了一个普通的字符串(基于在搜索栏中输入的内容),但是出于某种疯狂的原因,如果我在 . rangeOfString 方法,它总是返回 false!这是为什么?我也使用了 searchBar.text,它给了我同样的麻烦......我完全迷失了和沮丧。任何帮助将不胜感激!

【问题讨论】:

    标签: string swift uisearchbar


    【解决方案1】:

    如果可行,试试这个。

    var searchList = [String]()
    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchText!)
    let array = (searchList as NSArray).filteredArrayUsingPredicate(searchPredicate) as! [String]
    

    【讨论】:

      【解决方案2】:

      原来是因为我没有意识到 rangeOfString 搜索是区分大小写的!

      【讨论】:

        猜你喜欢
        • 2013-01-12
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多