我不知道如何将数据从Firebase获取到我的UITableView。我看过的所有教程都使用Firebase身份验证,在他们的视频中效果都很好,但是在尝试复制时却失败了。 这是我尝试过的:
首先是我的数据库结构:
这是我的代码:
func observePosts(){
let postsRef = Database.database().reference().child("posts")
postsRef.observe(.value, with: { snapshot in
var tempPosts = [Post]()
for child in snapshot.children {
if let childSnapshot = child as? DataSnapshot,
let dict = childSnapshot.value as? [String:Any],
let text = dict["text":""] as? String
{
let post = Post(text: text)
tempPosts.append(post)
}
}
self.posts = tempPosts
self.tableView.reloadData()
})
}
所以我的问题是:如何从这样的数据库结构中获取消息?
答案 0 :(得分:1)
let text = dict["text":""] as? String {
let post = Post(text: text)
tempPosts.append(post) }
这是错误的。没有像dict["text":""]
这样的东西。首先,您没有任何用于text关键字的数据,其次,您没有编写此:""]
,可以作为dict [“ text”]进行调用。
我认为您的解决方案是let text = dict["title"] as? String
。但是您的体系结构是错误的。您只能声明一个关键字。标题1,标题2错误。您只需要设置标题即可。
答案 1 :(得分:1)
如果您已按照YouTube教程进行操作,则很有可能您没有修改Firebase规则以反映未经身份验证的用户。如果没有,Firebase将忽略每个读/写请求。要启用此功能,请通过以下方式编辑您的Firebase规则:
{
"rules": {
".read": true,
".write": true
}
}
但是,还有更多。除非您处于测试模式,否则不要这样做。 Google有一些不错的文档:
访问https://firebase.google.com/docs/database/security,以了解有关安全规则的更多信息。