все свойства должны быть инициализированы в Swift, если вы не используете символ развертки '?'или же '!'и ваше свойство должно быть типом, например:
class ViewController: UIViewController {
var numberOnScreen: 0
}
это неверный способ установки типа, ноль - это int, но когда вы используете ':', компилятор ожидает тип, а не значение, чтобы исправить это, вам нужно сначала установить его тип:
class ViewController: UIViewController {
var numberOnScreen: Int = 0
}
таким образом выше инициализировал ViewController с numbeROnScreen всегда с нуля, но если вам нужно передать значение в конструктор выдолжен сделать:
class ViewController: UIViewController {
var numberOnScreen: Int
init(newValue: Int) {
self.numberOnScreen = newValue
super.init(nibName: "ViewController", bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Или, если вы хотите передать значение numberOnScreen после инициализации ViewController, вы должны добавить значок '?'чтобы сказать ViewController, что свойство будет инициализировано после инициализации:
class ViewController: UIViewController {
var numberOnScreen: Int?
}
Но вам нужно быть осторожным, чтобы использовать это свойство выше, оно может быть нулевым, и для его использования вам нужно использовать распаковщик '! ', но правильный способ получить доступ к этому значению - использовать let или guard
class Calculator {
init() {
let controller = ViewController()
controller.numberOnScreen = 1
guard let numberOfScreen = controller.numberOnScreen else {
return
}
print(numberOfScreen)
}
}
Итак, если вы хотите увидеть больше:
Необязательные значения
https://developer.apple.com/documentation/swift/optional
Заявления (о том, если позволено, охранник и многое другое)
https://docs.swift.org/swift-book/ReferenceManual/Statements.html