我正在尝试在用户键入时从Firebase提取数据,并且希望在表视图中显示该数据,但是在运行代码时出现此错误:线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffeed614ff8 )
这是我的数据库结构的样子。
用户
uid
电子邮件
电子邮件通知
用户名
全名
这是我的代码的样子。不用通过搜索栏进行搜索,我只是输入了自己的值(有一个用户的用户名是ginger)来进行此测试。
//MARK: - Tableview Datasource Methods
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return findFriends(text: "gin").count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "addFriendCell", for: indexPath) as! AddFriendTableViewCell
cell.lblName?.text = findFriends(text: "gin")[indexPath.row].name
cell.lbluserName?.text = findFriends(text: "gin")[indexPath.row].username
return cell
}
func findFriends(text: String) -> [User] {
let user = User()
var userArray = [User]()
let ref = Database.database().reference()
ref.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in
for userSnapshot in snapshot.children{
let userSnapshot = userSnapshot as! DataSnapshot
guard let dictionary = userSnapshot.value as? [String: Any] else { return }
user.name = (dictionary["name"] as? String)!
user.username = (dictionary["username"] as? String)!
userArray.append(user)
}
})
tableView.reloadData()
return userArray
}
}