gpt4 book ai didi

ios - Swift Firebase 以更智能的方式检索数据?

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

我有一个显示用户帖子的 UITableView。帖子包含post-imagepost-descriptionpost-owner-uidpost-owner usernamepost-owner profile picture。当用户上传帖子时,它会将这 5 个对象保存到 Firebase 帖子节点。

let Post = Post(description: description, imgUrl: imgUrl, postOwnerUID: postOwnerUID, postOwnerName: postOwnerName, postOwnerImg: postOwnerImg)

然后,应用程序检索它并将其显示在 tableCell 上。但是,我想问一下将所有数据保存在 Post 节点(甚至用户数据)或从 检索用户数据的最佳做法是什么使用 postOwnerUID(User uid)的 User 节点?如果可以,我该怎么做?

最佳答案

如果在显示帖子时,您总是需要用户名,那么将用户名保留在 Post 节点中可能是有意义的。但是,您需要为用户的每个帖子维护名称。通过引用用户的 uid,您只需在一处更新用户。

{
"posts": {
"p1": {
"owner": { "u1": true },
"description": "...",
"imgUrl": "http://..."
}
},
"user-posts": {
"u1": {
"p1": true
}
}
"users": {
"u1": {
"name": "John",
"imgUrl": "http://..."
}
}
}

您可以通过单独的请求获取您的帖子并检索其所有者。

let ref = FIRDatabase.database().referenceWithPath('posts')

ref.observeEventType(.ChildAdded, withBlock: { snapshot in

guard let json = snapshot.value as? [String:AnyObject] else { return }

let post = Post(...)

let uid = snapshot.childSnapshotForPath("owner").key
let ref = FIRDatabase.database().referenceWithPath('users/\(uid)')

ref.observeSingleEventOfType(.Value, withBlock: { snapshot in

let owner = Owner(...)

post.owner = owner
})
})

您还应该查看 FirebaseUI-iOS,它使使用 Firebase 数据填充表格变得非常容易 https://github.com/firebase/FirebaseUI-iOS

关于ios - Swift Firebase 以更智能的方式检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446092/

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