Ios 尝试从firebase获取用户时出错

Ios 尝试从firebase获取用户时出错,ios,swift,database,firebase,Ios,Swift,Database,Firebase,我试图从我的Firebase数据库中获取用户,在UITableView上显示他们的姓名,并能够搜索他们。出于某种原因,我看到这个函数在获取用户时出现了两个错误 错误:“User”类型的值在“self.users.append(User)”行没有成员“append” 错误:在“dispatch_async(dispatch_get_main_queue)”行没有“dispatch_get_main_queue”候选项生成预期的上下文结果类型“(dispatch queue,()->Void)” 如

我试图从我的Firebase数据库中获取用户,在UITableView上显示他们的姓名,并能够搜索他们。出于某种原因,我看到这个函数在获取用户时出现了两个错误

  • 错误:“User”类型的值在“self.users.append(User)”行没有成员“append”
  • 错误:在“dispatch_async(dispatch_get_main_queue)”行没有“dispatch_get_main_queue”候选项生成预期的上下文结果类型“(dispatch queue,()->Void)”
  • 如果你有办法解决这个问题,请告诉我。我已经在这上面停留了一段时间,似乎无法让用户显示。谢谢

        func fetchUser() {
        Database.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
            
            if let dictionary = snapshot.value as? [String: AnyObject] {
                let user = User()
                
                //will crash if your class properties don't exactly match up with firebase dictionary keys
                user.setValuesForKeys(dictionary)
                self.users.append(user)
                
                
                //this will crash because of background thread, so use dispatch async to fix
                dispatch_async(dispatch_get_main_queue)
                self.tableView.reloadData()
                print(user.name!, user.email!)
    

    第二个错误是因为这不是在主线程上运行某些东西的正确语法。应该是

    DispatchQueue.main.async { 
        self.tableView.reloadData()
    }
    
    至于第一个错误,我只能推测(因为您没有提供如何定义
    self.users
    。但我怀疑您将其定义为
    var-users:User
    ,而不是数组。因此,请确保:

    var users: [User]
    
    或使用初始化:

    var users = [User]()
    

    我已经就您昨天的问题对这个问题发表了评论:。以后如果评论不清楚,请回复,而不是重新发布相同的问题。对此表示抱歉,并感谢您昨天的回复。该帖子已关闭,因为它的格式不正确,我没有看到您的回复。我的不好,这里是新的。谢谢再次感谢你的回答