Firebase,Swift:无法检索数据

Posted

技术标签:

【中文标题】Firebase,Swift:无法检索数据【英文标题】:Firebase,Swift : Not able to retrieve Data 【发布时间】:2016-09-09 11:38:11 【问题描述】:

我正在尝试做一个简单的任务,从 Firebase 获取价值。 我在下面的图像中添加了相关屏幕。至少有一个打印命令应该向控制台打印一条消息,但它不起作用。我已经尝试修复它 1.5 天了,但我仍然不知道为什么它不起作用。

代码:

import UIKit
import Firebase

class MainVC: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()

        let ref = FIRDatabase.database().reference()

        ref.child("zonneschijn").observeSingleEventOfType(.Value, withBlock:  snapshot in
            if snapshot.value is NSNull 
                print("Does not exist currently")
             else 
                print("Exists currently")
            

        )
    

我也尝试过使用 viewDidAppear,也没有成功。

【问题讨论】:

【参考方案1】:

如果您不验证用户的身份。

转到 Firebase 控制台中 Realtime Database 中的 Rules 选项卡。

firebase 的默认安全规则是这样的:-


 "rules": 
    ".read": "auth != null",
    ".write": "auth != null"

   

这意味着只有经过身份验证的用户(那些使用 gmail、Facebook、gitter、电子邮件等登录的用户)才能读取或写入数据... 显然,您没有对您的用户进行身份验证,这就是您无法使用这些默认安全规则检索任何数据的原因。

这是一个很好的做法,只允许经过身份验证的用户访问数据库,因为它更安全。如果您仍然想读取数据,请将您的安全规则修改为:-

警告:- 不推荐如果您正在制作具有一些私有数据库的应用程序。

   // These rules give anyone, even people who are not users of your app,
    // read and write access to your database

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

更好的选择:-

登录您的用户(以电子邮件密码开头:Firebase EMAIL- Password Auth) 然后访问您的数据库

请阅读:Security Rule's

【讨论】:

嗯,它仍然没有打印,我应用了不推荐的代码。另外,我没有使用用户帐户,因为它只是一个用于主屏幕的简单任务。专门为此登录是没有意义的。 更新了我的答案,也试试看:- firebase.google.com/docs/database/security/quickstart “真实”部分使它起作用。所以它终于奏效了!从现在开始很高兴知道。感谢您抽出宝贵的时间。意义重大。 嗨,我们可以得到这个答案的更新版本。代码不再起作用了

以上是关于Firebase,Swift:无法检索数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中从 Firebase 检索数据的问题

Firebase 在 Swift 中检索低于自动 ID 的数据

Swift 3.1 - .setValuesForKeys和Firebase无法检索用户

Swift Firebase 将数据检索到 tableview

如何从firebase数据库中检索url并通过UIButton(SWIFT)显示url?

如何从 fire-base 检索数据到新活动中单击 RecyclerView