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:无法检索数据的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 在 Swift 中检索低于自动 ID 的数据
Swift 3.1 - .setValuesForKeys和Firebase无法检索用户
Swift Firebase 将数据检索到 tableview