Почему инициализация происходит в другом порядке в похожих фрагментах кода.Swift 4 - PullRequest
0 голосов
/ 12 мая 2018

Почему этот фрагмент работает по-другому:

1 - работает нормально

class TableViewCell: UITableViewCell {

    @IBOutlet weak var fullName: UILabel!
    @IBOutlet weak var age: UILabel!

    var viewModel: TableViewCellViewModelType? {
        willSet(viewModel) {
            fullName.text = viewModel?.fullName
            age.text = viewModel?.age
        }
    }
}

2 - ошибка, так как метка равна нулю.Но этот фрагмент хорошо работает, если я удаляю блок willSet и использую взамен viewWillAppear

class DetailViewController: UIViewController {

    @IBOutlet weak var label: UILabel!
    var viewModel: DetailViewModelType? {
        willSet(viewModel) {
            guard let viewModel = viewModel else { return }
            self.label.text = viewModel.description
        }
    }
}

Почему в первом случае все работает нормально, и все выходы не равны нулю, а во втором случае работает иначе, а выход на нулемомент viewModel установлен (из метода prepareForSegue исходного VC)

1 Ответ

0 голосов
/ 12 мая 2018

Вторая метка регистра - ноль, потому что VC еще не представлен, поэтому все его выходы - ноль (в отличие от viewWillAppear), но он работает с ячейкой, так как он уже загружается

...