我目前在为iOS应用创建适当的Firebase参考时遇到问题。我一整天都遇到了麻烦,无法找到解决方法。
import UIKit
import Firebase
import FirebaseDatabase
class ViewController: UIViewController {
@IBOutlet var remoteSwitch: UISwitch!
@IBOutlet var label: UILabel!
var ref: FIRDatabaseReference!
//That's where i get the Error ! --> Expected declaration
ref = FIRDatabase.database().reference()
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
如果有人能告诉我如何在iOS 10,Xcode 8中正确分配Firebase数据库参考,那就太好了。
Firebase设置成功到此为止。没有错误,一切都是用podfile等设置的......
THANKYOU。
感谢您@ ronatory提示您在viewDidload中创建引用。那很有效。
我现在可以从viewDidLoad函数写入Firebase。 但是当我想分配额外的UI开关来将数据写入数据库时,我仍然遇到问题。
import UIKit
import Firebase
import FirebaseDatabase
class ViewController: UIViewController {
@IBOutlet var remoteSwitch: UISwitch!
@IBOutlet var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let ref = FIRDatabase.database().reference()
ref.child("timeo").setValue(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func switched(_ sender: UISwitch) {
if remoteSwitch.isOn == true {
label.text = "ON"
//location *
ref.child("timeo").setValue(true)
}
else {
label.text = "OFF"
//location *
ref.child("timeo").setValue(false)
}
}
}
我认为那里的范围存在问题,因为它显示了位置*的错误,它并不知道这些变量。
如果有人可以帮助我,那将是非常好的。感谢。
Timeo酒店
更新
答案 0 :(得分:1)
你可以这样直接:
import UIKit
import Firebase
import FirebaseDatabase
class ViewController: UIViewController {
@IBOutlet var remoteSwitch: UISwitch!
@IBOutlet var label: UILabel!
var ref = FIRDatabase.database().reference()
override func viewDidLoad() {
super.viewDidLoad()
}
}
还要确保安装了Pod:
pod 'Firebase/Database'
答案 1 :(得分:1)
<强>问题:强>
您在ref
中创建并初始化viewDidLoad()
常量,因此只能在viewDidLoad()
范围内使用。
<强>解决方案:强>
要在switched(_:)
方法等其他方法中访问它,您需要创建类型为FIRDatabaseReference
的引用,然后您可以在viewDidLoad()
初始化它以便能够设置之后的值(提示在代码注释中):
import UIKit
import Firebase
import FirebaseDatabase
class ViewController: UIViewController {
@IBOutlet var remoteSwitch: UISwitch!
@IBOutlet var label: UILabel!
// create the reference here
var ref: FIRDatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
// initialize your reference
ref = FIRDatabase.database().reference()
ref.child("timeo").setValue(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func switched(_ sender: UISwitch) {
if remoteSwitch.isOn == true {
label.text = "ON"
// now you should be able to access your reference here
ref.child("timeo").setValue(true)
}
else {
label.text = "OFF"
// now you should be able to access your reference also here
ref.child("timeo").setValue(false)
}
}
}