Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么在相似的代码片段中初始化顺序不同。斯威夫特4_Ios_Swift_Initialization_Storyboard - Fatal编程技术网

Ios 为什么在相似的代码片段中初始化顺序不同。斯威夫特4

Ios 为什么在相似的代码片段中初始化顺序不同。斯威夫特4,ios,swift,initialization,storyboard,Ios,Swift,Initialization,Storyboard,此代码段工作方式不同的原因: 1-工作正常 class TableViewCell: UITableViewCell { @IBOutlet weak var fullName: UILabel! @IBOutlet weak var age: UILabel! var viewModel: TableViewCellViewModelType? { willSet(viewModel) { fullName.text = vi

此代码段工作方式不同的原因:

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块并改用ViewWillDisplay,这个代码段效果会很好

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时出口为零(从源VC的prepareForSegue方法)

第二种情况标签为零,因为VC尚未显示,所以它的所有出口都为零(与之相反,在
视图中将出现
),但它与单元格一起工作,因为它已经被加载了

谢谢你的回复。但是为什么我设置断点时,第一个触发的断点是outlet,然后会设置一个。如果是这样,反之亦然,对吗?或者我错过了什么?