gpt4 book ai didi

swift - 使用swift在firebase中获取嵌套数据

转载 作者:行者123 更新时间:2023-11-28 14:03:01 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序上实现对帖子的评论,但在获取帖子中称为“评论”的嵌套数据时遇到问题。如果我的 firebase 数据库结构类似于图片,我该如何正确地将评论下载为 messageComments 数组?

func getFeedMessages(handler: @escaping (_ feedMessages:[FeedMessages]) -> ()){
var feedMessagesArray = [FeedMessages]()
var commentArray = [messageComments]()


REF_FEEDMESSAGES.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"
let date = messages.childSnapshot(forPath: "date").value as? String ?? "0"
let comments = messages.childSnapshot(forPath: "comments").value as? [messageComments] ?? []
let userName = messages.childSnapshot(forPath: "userName").value as? String ?? "Anonymous"

let messages = FeedMessages(content: content, color: color, icon: icon, date: date, comments: comments, userName: userName)
feedMessagesArray.append(messages)
}

handler(feedMessagesArray)
}
}

enter image description here

最佳答案

您不能访问这样的评论。您需要使用 encodable 来执行此操作,或者由于您手动访问每个快照中的值,您可以像这样访问它:

let comments = messages.childSnapshot(forPath: "comments").value as? [String: Any]
let comment1 = comments?["comment1"] as? String ?? "comment1"
let comment2 = comments?["comment2"] as? String ?? "comment2"

然后您需要通过调用您的messageComments 初始化程序来正常初始化您的对象messageComments。另外,我建议您的类(class)名称以大写字母开头。

编辑:对于手动加载评论,我建议这样做:

if let comments = comments { 
for comment in comments.values {
// here your access your comment as you want, you need to cast as string
}
}

关于swift - 使用swift在firebase中获取嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53355175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com