2016-09-09 127 views
4

我试图做一个简单的任务,从Firebase获取值。 我在相关屏幕上添加了以下图像。至少有一个打印命令应该向控制台打印消息,但它不起作用。我一直试图修复1.5天,但我仍然不知道为什么它不起作用。Firebase,Swift:无法检索数据

代码:

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,也没有更迭。

Image with the relevant screens

回答

5

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

访问Firebase控制台中的Rules标签Realtime Database

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

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

    } 
} 

这意味着只有认证用户(谁已在任一使用Gmail,Facebook和小胶质签署这些用户,email..etc)可以读或写入数据... 很明显,您没有对您的用户进行身份验证,因此您无法使用这些默认安全规则检索任何数据。

这是一个很好的做法,只允许被授权的用户可以访问数据库,因为它是更secure.If你想反正读取数据,修改安全规则,这一点: -

警告 : - 不推荐如果你正在使应用程序有一些私人数据库。

// 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 
     } 
    } 

一个更好的选择: -

务必阅读:Security Rule's

+0

嗯它仍然没有打印,我申请了不推荐的代码。 此外,我不使用用户帐户,因为它只是一个简单的任务,主屏幕。特别为此登录是没有意义的。 –

+1

更新了我的答案,也尝试寻找: - https://firebase.google.com/docs/database/security/quickstart – Dravidian

+0

“真实”部分使其工作。所以它的工作,最后!从现在开始很好了解。谢谢你的时间Dravidian。意义重大。 –