所以事情是这样的,我要声明一个这样的属性:
var aNameLabel: UILabel {
guard let foo = Applicant.sharedInstance.realName else {
return UILabel(text: "获取姓名失败", color: .whiteColor())
}
return UILabel(text: foo, color: .whiteColor())
}
当我尝试在我做之后向 aNameLabel 添加约束时someView.addSubView(aNameLabel)
,应用程序每次都会在这个添加约束的事情上崩溃,并说No common superview between views
但是,当我将变量更改为 let 常量时,如下所示:
let aNameLabel = UILabel(text: "Allen", color: .whiteColor())
将毫无怨言地添加约束。有人可以帮我解决这个问题吗?
更新
在 @par 的帮助下,我将代码更改为:
var aNameLabel: UILabel = {
guard let foo = Applicant.sharedInstance.realName else {
return UILabel(text: "BAD", color: .whiteColor())
}
return UILabel(text: foo, color: .whiteColor())
}()
然后aNameLabel
总是会被赋值为“BAD”,而实际上 myguard let
是成功的。我该如何解决?