【问题标题】:Argument type 'String.Type' does not conform to expected type 'StringProtocol' in Swift [closed]参数类型“String.Type”不符合 Swift 中的预期类型“StringProtocol”[关闭]
【发布时间】:2023-12-08 08:54:02
【问题描述】:

我正在使用带有搜索栏的表格视图,它接受多个搜索输入并过滤表格,但我收到以下消息:

“参数类型'String.Type'不符合预期的类型'StringProtocol'”

var arrayFilter = [[]]
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    self.arrayFilter = array.filter{
        if let pos = ($0[0] as! String).lowercased().range(of:String)(searchText.lowercaseString) {
            return (pos.startIndex == ($0[0] as! String).startIndex)
        }
        return false
    }
    tableView.reloadData()
}

引发错误的行是:

if let pos = ($0[0] as! String).lowercased().range(of:String)(searchText.lowercaseString) {
return (pos.startIndex == ($0[0] as! String).startIndex)

【问题讨论】:

    标签: swift swift4 swift-protocols


    【解决方案1】:

    看来你只是有一个错字。实际上这根本不应该编译,因为它不是有效的 Swift 代码。

    问题就在这里:

    .range(of:String)(searchText.lowercaseString)
    

    你需要改成:

    .range(of: searchText.lowercaseString)
    

    【讨论】:

      最近更新 更多