我尝试创建一个搜索器,该搜索器过滤每个注册用户的结果,但我得到的只是“类型'User'的值没有成员'lowercased'”作为错误...
错误出现在下一行
let searchedUser = users.filter({$0.lowercased().prefix(searchText.count) == searchText.lowercased()})
完整代码
var users = [User]()
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
let searchedUser = users.filter({$0.lowercased().prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
编辑: User.swift
class User: NSObject {
var id: String?
var name: String?
var email: String?
var profileImageUrl: String?
init(dictionary: [String: AnyObject]) {
self.id = dictionary["id"] as? String
self.name = dictionary["name"] as? String
self.email = dictionary["email"] as? String
self.profileImageUrl = dictionary["profileImageUrl"] as? String
}
}
答案 0 :(得分:3)
您必须创建属性 lowercased
之一,例如$0.name?.lowercased()
。
但是有一种更有效的API可以从头开始搜索不区分大小写的部分字符串:
let searchedUser = users.filter{$0.name?.range(of: searchText, options: [.anchored, .caseInsensitive]) != nil }