Ios 无错误地创建Firebase引用

Ios 无错误地创建Firebase引用,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我目前在为我的iOS应用程序创建正确的Firebase引用时遇到问题。我一整天都在为这件事烦恼,就是找不到解决办法 import UIKit import Firebase import FirebaseDatabase class ViewController: UIViewController { @IBOutlet var remoteSwitch: UISwitch! @IBOutlet var label: UILabel! var ref: FIRDat

我目前在为我的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等设置的

谢谢

问题更新 感谢@Ronatary提供在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)
            }
        }

    }
我认为那里的作用域有问题,因为它显示了位置*的错误,它不知道这些变量

如果有人能帮我,那就太好了。谢谢

蒂梅奥

更新


您可以这样做:

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'

你可以直接这样做:

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'

问题:

viewDidLoad()
中创建并初始化
ref
常量,因此它仅在
viewDidLoad()
的范围内可用

解决方案:

要在其他方法(如
switched(:)
方法)中访问它,您需要创建一个类型为
FIRDatabaseReference
的引用,然后可以在
viewDidLoad()
中对其进行初始化,以便能够在此之后设置值(提示在代码注释中):


问题:

viewDidLoad()
中创建并初始化
ref
常量,因此它仅在
viewDidLoad()
的范围内可用

解决方案:

要在其他方法(如
switched(:)
方法)中访问它,您需要创建一个类型为
FIRDatabaseReference
的引用,然后可以在
viewDidLoad()
中对其进行初始化,以便能够在此之后设置值(提示在代码注释中):


例如,您需要将
ref=FIRDatabase.database().reference()
放入类似
viewDidLoad
的方法中。因为您试图在类中分配它,所以它现在确实给出了一个错误scope@ronatory检查更新添加我对更新问题的回答您需要将
ref=FIRDatabase.database().reference()
放入类似
viewDidLoad
的方法中。因为您试图在类中分配它,所以它现在确实给出了一个错误scope@ronatory检查更新我对你更新的问题的回答谢谢你这么多你帮了我这么多。一整天都在努力。干杯是的,我能帮你真是太好了!干杯非常感谢你帮了我这么多。一整天都在努力。干杯是的,我能帮你真是太好了!干杯