在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'
答案 0 :(得分:2)
需要更新firebase文档。 1.在课堂顶部导入这两个
import FirebaseCore
import FirebaseDatabase
覆盖func viewDidLoad(){
super.viewDidLoad()
var ref: DatabaseReference!
ref = Database.database().reference()
}
答案 1 :(得分:1)
您需要使用更新代码,也许编译器没有很好地建议修复
var ref: DatabaseReference!
ref = Database.database().reference()
ref.child("rooms").observeSingleEvent(of: .value, with: { (snapshot) in
// ...
})
正如您所看到的,代码运行良好,请考虑pod deintegrate
& pod update
答案 2 :(得分:0)
您的语法对我来说是正确的(对于new Firebase 4):
var ref: DatabaseReference!
ref = Database.database().reference()
并且,查看their source code (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
答案 3 :(得分:0)
对于Firebase 4.0,有一个更改
链接:https://firebase.google.com/docs/reference/ios/naming-migration-guide