我目前在为我的 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 等设置...
谢谢。
问题更新
感谢@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)
}
}
}
我认为那里的作用域有问题,因为它在位置 * 处显示错误,它不知道这些变量。
如果有人可以帮助我,那就太好了。谢谢。
时间
更新
最佳答案
问题:
您在 viewDidLoad()
中创建并初始化了 ref
常量,因此它仅在 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)
}
}
}
关于ios - 正确创建 Firebase 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41944536/