想象我们有一个lazy imageView
,如果要分配图像,我们想仅对其进行初始化。因此,我们需要每次检查image值:
lazy var imageView1 = UIImageView()
lazy var imageView2 = UIImageView()
var image: UIImage?
var someOptional: SomeType?
func addImage1IfNeeded() {
guard let image = image else { return }
imageView1.image = image
}
func addImage2IfNeeded() {
guard let image = someOptional?.someChildOptional?.image else { return }
imageView2.image = image
}
因此,如果我们有很多optional
和lazy
变量以及某些可选链接情况,我们将有大量重复代码。
什么是更优雅的方式? (也许使用运算符?可选的扩展名?)
请注意,这不是为了优化。总结了此示例,并且如果您没有数据要显示而不想添加UI元素,则会发生原始问题。同样在其他情况下。
lazy var imageView1: UIImageView? = UIImageView()
lazy var imageView2: UIImageView? = UIImageView()
func addImage1IfNeeded() {
imageView1?.image = image
}
func addImage2IfNeeded() {
imageView2?.image = someOptional?.someChildOptional?.image
}
效果很好。