В 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()
}
}
Я бы предположил, что вы хотите добиться этого:
class ViewController: UIViewController {
var ref: DatabaseReference! = Database.database().reference()
override func viewDidLoad() {
...
}
Ваша проблема заключается в том, что вы хотите присвоить значение ранее объявленному свойству в блоке "объявления".
Он работает во втором случае, потому что вы уже объявили свойство, и вы придаете ему новое значение в одном из ваших методов. viewDidLoad
- это всего лишь один из любых других способов, которыми вы могли бы это сделать.
Возможно, вы захотите прочитать ссылку на язык здесь, в частности, хранимые переменные и свойства хранимой переменной