我正在尝试添加一个自定义分支,该分支列出用户的所有朋友。目前,我拥有添加用户电子邮件和姓名的代码(请参见下面的照片中的user1)。
let ref = Database.database().reference(fromURL: FIREBASE_GAME)
let usersReference = ref.child("users").child(uid)
let values = ["name" : name, "email" : email]
usersReference.updateChildValues(values, withCompletionBlock: { (err, ref) in
if(err != nil) {
print(err!)
return
}
我会在值字典中添加“朋友”作为键,然后将该值作为子分支吗?我不知道代码中会是什么样子。我在Firebase中手动设置了user2(这是我想在代码中执行的操作)。我是Firebase的新手,大多数资源都提供了非常基本的示例。我将不胜感激任何帮助。
答案 0 :(得分:1)
我认为您正在寻找这个:
let values = ["name" : name, "email" : email, "friends": [ "jake": false, "mike": true ]]
usersReference.updateChildValues(values, withCompletionBlock: { (err, ref) in
if(err != nil) {
print(err!)
return
}
或者,您可以通过单独的呼叫来编写/更新朋友:
usersReference.child("friends").updateChildValues(["jake": false, "mike": true])
答案 1 :(得分:0)
以以下格式创建模型类。您需要在Firebase控制台中更改对象Friend。
class ListModel: NSObject {
var UID:String?
var Name:String?
var Email:String?
var Friends:[Friend]?
}
class Friend : NSObject {
var Name : String?
var Status : Bool?
}
在View Controller中,您可以使用以下代码进行访问
var Obj : ListModel?
var ListArr = [ListModel]()
let ref = Database.database().reference().child(“users”)
ref.observe(.childAdded, with: { (snapshot) in
print(snapshot)
guard let dictionary = snapshot.value as? [String : AnyObject]
else {
return
}
let Obj = ListModel()
Obj.UID = snapshot.key
Obj.Name = dictionary["name"] as? String
Obj.Email = dictionary["email"] as? String
let friendsArr = dictionary[“friends”] as? NSArray
var friendObj = [Friend]()
if friendsArr != nil{
for dict in friendsArr as! [[String: AnyObject]] {
let friend = Friend)
friend.Name = dict["name"] as? String
friend.Status = dict["mobile"] as? Bool
friendObj.append(friend)
}
}
Obj. friendsArr = friendObj
self.ListArr.append(Obj)
}, withCancel: nil)