【问题标题】:Get data from Firebase and display in TableViewCell as post从 Firebase 获取数据并在 TableViewCell 中作为帖子显示
【发布时间】:2019-04-28 21:07:44
【问题描述】:

我不知道如何从 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()
    })
}

所以我的问题是:例如,我如何从这样的数据库结构中获取消息?

【问题讨论】:

    标签: swift database firebase firebase-realtime-database


    【解决方案1】:
    let text = dict["text":""] as? String {
       let post = Post(text: text)
       tempPosts.append(post) }
    

    这是错误的。没有像 dict["text":""] 这样的东西。首先你没有文本关键字的任何数据,其次你没有写这个:""],你可以调用dict[“text”]。

    我认为您的解决方案是 let text = dict["title"] as? String 。但是你的架构是错误的。您可以只声明一个关键字。标题1,标题2是错误的。你只需要设置标题。

    【讨论】:

    • 我的想法实际上是将标题和消息制作成键值对。因为他们总是在一起。所以标题总是不同的。我不能这样吗?
    • 不更改密钥的名称!就像 codeByThey 说的,你不应该声明一个具有多个名称的键!您应该为每个孩子设置一个关键字,并且可以根据需要更改值;关键字无法像您那样制作
    【解决方案2】:

    如果您已按照 YouTube 教程进行操作,则很有可能您没有修改 Firebase 规则以反映未经身份验证的用户。如果您不这样做,Firebase 会忽略每个读/写请求。要启用此功能,请通过以下方式编辑您的 Firebase 规则:

    将规则设置为 TRUE

    {
      "rules": {
        ".read": true,
        ".write": true
      }
    }
    

    但是,还有更多。除非您处于测试模式,否则不要这样做。谷歌有一些很好的文档:

    访问https://firebase.google.com/docs/database/security了解更多关于安全规则的信息。

    【讨论】:

    • 我现在这样做了。这是我早期问题之一的答案:D
    • 我可以为以后的访客保留它吗? :3
    • 请记住我的挣扎……拜托!没有人应该像疯子一样浏览他的代码并在数据库规则中找到答案:P
    猜你喜欢
    • 2018-07-26
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多