【问题标题】:Value of type 'x' has no member 'lowercased“x”类型的值没有“小写”成员
【发布时间】:2018-12-23 13:26:43
【问题描述】:

我正在尝试在我的表格视图中实现搜索栏。但我收到了这个错误 “getUserData”类型的值在此代码中没有“小写”成员

filteredDataBySearch = dataSourceArray.filter({ (data:String) -> Bool in
    return data.lowercased().rangeOfString(searchText.lowercased()) != nil
})

这是我的代码:

@IBOutlet weak var FSuserLIst: UITableView!
var dataSourceArray1 = [getUserData]()
var dataSourceArray2 = [getUserData]()
var dataSourceArray3 = [getUserData]()
var dataSourceArray4 = [getUserData]()
let searchBar = UISearchBar()
var showSearchResults = false
var filteredDataBySearch = [getUserData]()

这是我的搜索功能

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {

    showSearchResults = true
    searchBar.endEditing(true)
    self.FSuserLIst.reloadData()

}

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    if segmentedData.selectedSegmentIndex == 0 {

        filteredDataBySearch = dataSourceArray.filter({ (data:String) -> Bool in

            return data.lowercased().rangeOfString(searchText.lowercased()) != nil
        })

        if searchText != "" {

            showSearchResults = true
            self.FSuserLIst.reloadData()
        } else {
            showSearchResults = false
            self.FSuserLIst.reloadData()
        }
    }

    else if segmentedData.selectedSegmentIndex == 1 {

        filteredDataBySearch = dataSourceArray1.filter({ (data:String) -> Bool in

            return data.lowercased().rangeOfString(searchText.lowercased()) != nil
        })

        if searchText != "" {

            showSearchResults = true
            self.FSuserLIst.reloadData()
        } else {
            showSearchResults = false
            self.FSuserLIst.reloadData()
        }
    }

    else if segmentedData.selectedSegmentIndex == 2 {

        filteredDataBySearch = dataSourceArray2.filter({ (data:String) -> Bool in

            return data.lowercased().rangeOfString(searchText.lowercased()) != nil
        })

        if searchText != "" {

            showSearchResults = true
            self.FSuserLIst.reloadData()
        } else {
            showSearchResults = false
            self.FSuserLIst.reloadData()
        }
    }

  else if segmentedData.selectedSegmentIndex == 3 {

        filteredDataBySearch = dataSourceArray3.filter({ (data:String) -> Bool in

            return data.lowercased().rangeOfString(searchText.lowercased()) != nil
        })

        if searchText != "" {

            showSearchResults = true
            self.FSuserLIst.reloadData()
        } else {
            showSearchResults = false
            self.FSuserLIst.reloadData()
        }
    }
}

"getUserData" 是具有超过 10 个变量的类,它位于另一个 swift 文件中。

非常感谢任何帮助,谢谢。

【问题讨论】:

  • getUserData 不是字符串,为什么要尝试将其过滤为字符串?此外,类名永远不应该这样命名,应该是UserData 或其他东西
  • 我应该过滤什么?我是这方面的新手...谢谢。
  • 添加 getUserData 类。类名总是以大写字母开头。

标签: ios swift xcode swift4 xcode9.4


【解决方案1】:

您正在尝试将 getUserData 类转换为小写。您想访问此类中的字符串,然后对其进行转换。我尚未对此进行测试,但您正在寻找类似的东西。

filteredDataBySearch = dataSourceArray.filter({ (userData:MyUserDataClass) -> Bool in

    let data = userData.myStringInThisClass.lowercased()

    return data.contains(searchText.lowercased())
})

这将在类中获取一个字符串变量并将其转换为小写。

作为旁注,典型的约定是使用大写作为类名,即。 MyClass

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多