为惰性属性分配可选内容的更优雅的方法

问题描述 投票:0回答:2

想象我们有一个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
} 

因此,如果我们有很多optionallazy变量以及某些可选链接情况,我们将有大量重复代码。

什么是更优雅的方式? (也许使用运算符?可选的扩展名?)

请注意,这不是为了优化。总结了此示例,并且如果您没有数据要显示而不想添加UI元素,则会发生原始问题。同样在其他情况下。

swift optional lazy-evaluation
2个回答
0
投票

lazy var imageView1: UIImageView? = UIImageView()
lazy var imageView2: UIImageView? = UIImageView()


func addImage1IfNeeded() {
    imageView1?.image = image
} 

func addImage2IfNeeded() {
    imageView2?.image = someOptional?.someChildOptional?.image
} 

效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.