Ты супер близко!Узел комментариев на самом деле является просто дочерним снимком в каждом узле сообщения, так что вы можете рассматривать его как таковой.
Вот ваш код с дополнительным кодом для печати комментариев из каждого узла сообщения.
Вам понадобится добавить проверку ошибок и код для добавления их в FeedMessages.
feedMessagesRef.observeSingleEvent(of: .value) { feedMessagesSnapshot in
guard let feedMessagesSnapshot = feedMessagesSnapshot.children.allObjects as? [DataSnapshot] else {return}
for messages in feedMessagesSnapshot {
let content = messages.childSnapshot(forPath: "content").value as? String ?? "Joe Flacco is an elite QB"
let icon = messages.childSnapshot(forPath: "icon").value as? String ?? "none"
let color = messages.childSnapshot(forPath: "color").value as? String ?? "bop"
print(content, color, icon)
let comments = messages.childSnapshot(forPath: "comments")
for comment in comments.children {
let commentSnap = comment as! DataSnapshot
let aComment = commentSnap.value as! String
print(aComment)
}
let messages = FeedMessages(content: content, color: color, icon: icon, votes: votes)
feedMessagesArray.append(messages)
}
}
Запись узла - это тот же мыслительный процесс - узел комментариев - это просто еще один ключ: пара значений в сообщении, причем значением является набор пар ключ: значение.
Вот пример, в котором мы используем словарь для построения структуры и затем пишем узел
let feedMessagesRef = self.ref.child("feedMessages")
let messageDict:[String: Any] = [
"content": "some content",
"color": "some color",
"icon": "an icon",
"comments":
["comment_0": "a comment",
"comment_1": "another comment"]
]
let aFeedMessage = feedMessagesRef.childByAutoId()
aFeedMessage.updateChildValues(messageDict)