在新的Firebase 4.0版本中获取数据库参考
在Firebase 3.0+中,获取数据库引用的方法如下:
var ref: FIRDatabaseReference! ref = FIRDatabase.database().reference() ref.child("rooms").observeSingleEventOfType(.Value, withBlock: { (snapshot) in if snapshot.hasChild("room1"){ print("true rooms exist") }else{ print("false room doesn't exist") } })
在Firebase 4.0中,命名约定已更改,但我无法使其工作!?
var ref: DatabaseReference! ref = Database.database().reference()
有人遇到过这种情况么?
swift编译器建议从小写数据库函数调用中删除()
如果你删除它,它然后抛出错误消息:
- 数据库没有成员参考
那你怎么得到参考呢?
Pod文件:
pod 'Firebase/Core' pod 'Firebase/Database'
firebase文档需要更新。 1.在课堂顶部导入这两个
import FirebaseCore import FirebaseDatabase
- 获取数据库引用仅适用于ViewDidLoad()
override func viewDidLoad(){
super.viewDidLoad() var ref: DatabaseReference! ref = Database.database().reference() }
您需要使用更新代码,也许编译器没有很好地建议修复
var ref: DatabaseReference! ref = Database.database().reference() ref.child("rooms").observeSingleEvent(of: .value, with: { (snapshot) in // ... })
正如您所看到的,代码完美运行,考虑pod deintegrate
& pod update
您的语法对我来说是正确的(对于新的Firebase 4 ):
var ref: DatabaseReference! ref = Database.database().reference()
并且,查看他们的源代码( FIRDatabase.h
) ,您所做的一切都完美匹配:
FIR_SWIFT_NAME(Database) @interface FIRDatabase : NSObject + (FIRDatabase *) database FIR_SWIFT_NAME(database()); - (FIRDatabaseReference *) reference;
您确定自己使用的是最新的SDK版本吗? 作为最后的手段,试试这个:
pod cache clean rm Podfile.lock rm -rf Pods pod install rm -rf DerivedData
对于Firebase 4.0,有一个变化
- 删除所有常量,协议,类,枚举和类型定义的名称之间的FIR前缀。
- 将FIRApp重命名为FirebaseApp。
- 将FIROptions重命名为FirebaseOptions。
链接: https : //firebase.google.com/docs/reference/ios/naming-migration-guide