为什么ref = Database.database()。reference()必须在viewDidLoad func

时间:2017-06-20 14:43:11

标签: ios swift firebase firebase-realtime-database

在ViewController.swift中,我尝试创建ref

class ViewController: UIViewController  {
  var ref: DatabaseReference!
  ref = Database.database().reference() //ERROR: EXPECTED DECLARATION
  override func viewDidLoad() {
        super.viewDidLoad()



    }
}

它显示错误"期待声明"。

但是如果我将ref = Database.database()。reference()移到viewDidLoad里面,它就可以了。为什么呢?

class ViewController: UIViewController  {
  var ref: DatabaseReference!

  override func viewDidLoad() {
        super.viewDidLoad()
        ref = Database.database().reference()


    }
}

1 个答案:

答案 0 :(得分:3)

我猜你想要达到的目的是:

class ViewController: UIViewController  {
var ref: DatabaseReference! = Database.database().reference()
override func viewDidLoad() {
    ...
}

您的问题是您想要在"声明"中为先前声明的属性赋值。块。

它适用于第二种情况,因为您已经声明了属性,并在其中一个方法中为其赋予了新值。 viewDidLoad只是您可以使用的任何其他方法之一。

您可能希望阅读语言参考here,尤其是存储变量和存储变量属性