У меня есть пользовательский класс, этот подкласс UITableViewController или UIViewController. И там я получаю сообщение об ошибке, что каждое значение должно быть инициализировано при вызове super.init. Для меня решение - установить значение для каждого свойства/переменной, но почему я просто не могу оставить его просто инициализированным без какой-либо ценности? И что мне лучше делать в этой ситуации?SubClass UITableViewController и инициализация переменных. iOS, SWIFT
import UIKit
import Foundation
class MSOrder: UITableViewController {
var orderId: Int
var orderNumber: Int
var statusText: String
init(orderId: Int,
orderNumber: Int,
statusText: String) {
self.orderId = orderId
self.orderNumber = orderNumber
self.statusText = statusText
super.init(style: UITableViewStyle.Plain)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
Итак, я могу использовать "!" суффикс, только если я на 100% уверен, что все будет хорошо, и каждая переменная получит свое значение, поняла его. И единственный способ сделать это безопасным - установить значение прямо так: var orderNumber: Int = 0/var statusText: String = "" и т. Д., Правильно? –
Ну, не совсем понятно, что вы пытаетесь сделать, но давайте представим себе этот сценарий: вы запускаете 'TableViewController' и еще не имеете данных (например, вы установите свойства в' viewDidLoad' или в какой-то момент после вашей инициализации), вам придется объявить свои свойства с помощью '!'потому что компилятор просто действительно ожидает, что эти значения будут установлены, если вы не используете'! 'или'? '(необязательное значение). –
@critic Благодарим вас за помощь. Могу ли я попросить еще одну вещь? Почему нам еще нужно инициализировать наши переменные в некоторых классах, если мы можем просто установить его как необязательный и оставить без init()? –