ios – Firebase – 获取对存储在childByAutoID下的值的引用

ios – Firebase – 获取对存储在childByAutoID下的值的引用,第1张

概述我一直在关注制作聊天应用程序的教程,该应用程序有单独的“房间”,但它只是每个用户的一个中心列表 – 我正在尝试改变它,以便每个用户看到他们自己的房间列表(房间那个他们创造,并由朋友添加他们的房间). 这是处理创建房间并将其添加到列表的代码: // Create new room@IBAction func createRoom(_ sender: Any) { if let name = 我一直在关注制作聊天应用程序的教程,该应用程序有单独的“房间”,但它只是每个用户的一个中心列表 – 我正在尝试改变它,以便每个用户看到他们自己的房间列表(房间那个他们创造,并由朋友添加他们的房间).

这是处理创建房间并将其添加到列表的代码:

// Create new room@IBAction func createRoom(_ sender: Any) {    if let name = newRoomTextFIEld?.text {        let newRoomref = roomref.childByautoID()        let roomItem = [            "name": name        ]        newRoomref.setValue(roomItem)        // How to add room to user's room?        let userRef: FIRDatabaseReference = FIRDatabase.database().reference().child("users")    }}private func observeRooms() {    // Observe method to Listen for new channels being written to Firebase    roomrefHandle = roomref.observe(.childAdded,with: { (snapshot) -> VoID in        let roomData = snapshot.value as! Dictionary<String,AnyObject>        let ID = snapshot.key        if let name = roomData["name"] as! String!,name.characters.count > 0 {            self.rooms.append(Room(ID: ID,name: name))            self.tableVIEw.reloadData()        } else {            print("Error! Could not decode channel data")        }    })}

创建一个房间时,我想将新创建的房间添加到Firebase中用户的“房间”节点(我将尝试用它来创建用户的参与房间列表),但每个用户都有使用childByautoID创建的唯一ID,因此我不确定如何访问它.这就是我的Firebase数据库结构的样子:

{  "rooms" : {    "-KgK418WuJGjYw27Tg1-" : {      "messages" : {        "-KgK42e1zl3xxUS0E0C0" : {          "senderID" : "2q4VCKu1e7hiL84ObdzgQcQ0pH63","sendername" : "Timothy","text" : "Hi"        },"-KgK45LTf3R439mOMpvE" : {          "senderID" : "2q4VCKu1e7hiL84ObdzgQcQ0pH63","text" : "Testing"        }      },"name" : "Room One"    }  },"users" : {    "-KgK3zXgap-iRFsbpv8D" : {      "gender" : "male","handle" : "TestHandle123","name" : "Timothy","profilePicture" : "https://graph.facebook.com/*removed for privacy*/picture?type=large&return_ssl_resources=1","rooms" : {        "roomname" : ""      }    }   }}

如何将房间正确添加到在Firebase中创建房间的用户?

编辑:

试过这个

let userRef: FIRDatabaseReference = FIRDatabase.database().reference().child("users")        let key = userRef.key        let childUpdates = ["/\(key)/rooms/": roomItem]        userRef.updateChildValues(childUpdates)

它最终在“用户”下创建了第二个节点,而不是在该特定用户中.

{  "rooms" : {    "-KgKS0VN65GS2r-Cz6K0" : {      "name" : "Room Two"    }  },"users" : {    "-KgKS-X63uSOMnpDWtDn" : {      "gender" : "male","profilePicture" : "https://graph.facebook.com/*removed for privacy*/picture?type=large&return_ssl_resources=1"        },"users" : {         "rooms" : {            "name" : "Room Two"          }        }      }    }
解决方法 您应该阅读 the documentation,以下是存储该密钥的方法:

let key = ref.child("posts").childByautoID().key
总结

以上是内存溢出为你收集整理的ios – Firebase – 获取对存储在childByAutoID下的值的引用全部内容,希望文章能够帮你解决ios – Firebase – 获取对存储在childByAutoID下的值的引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1066674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存