类型“用户”的值没有成员“小写”

时间:2018-12-29 08:59:19

标签: ios swift

我尝试创建一个搜索器,该搜索器过滤每个注册用户的结果,但我得到的只是“类型'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
    }
}

1 个答案:

答案 0 :(得分:3)

您必须创建属性 lowercased之一,例如$0.name?.lowercased()

但是有一种更有效的API可以从头开始搜索不区分大小写的部分字符串:

let searchedUser = users.filter{$0.name?.range(of: searchText, options: [.anchored, .caseInsensitive]) != nil }