【发布时间】:2020-09-09 00:27:34
【问题描述】:
我有一个具有惰性 UIView 属性的 ViewController:
class DetailView: UIViewController {
var presenter: DetailPresenterProtocol?
var heroData: MarvelData?
var marvelDataCollection: [MarvelData]? {
didSet {
print("Initialized")
}
}
lazy var bodyView: BodyDetailView = {
print("Inside lazy var initialization")
guard let data = marvelDataCollection else { return BodyDetailView(data: [], elems: "")}
print(data)
let body = BodyDetailView(data: data, elems: heroData?.description ?? "No description")
return body
}()
///More stuff over here
}
// MARK: - Lifecycle
extension DetailView {
override func viewDidLoad() {
super.viewDidLoad()
presenter?.viewDidLoad()
title = heroData?.name ?? "No name"
setupViews()//Here I set the lazy UIView
print("Finished view did load")
}
}
问题是当在惰性变量中解包数据时,它是 nil,因为“marvelDataCollection”已经没有值了。
这是流程:
惰性变量初始化内部
已加载完成的视图
已初始化
我做错了什么? 谢谢
【问题讨论】: