Skip to main content
 首页 » 操作系统

ios之Swift 属性观察器和 nil

2024年01月01日46qlqwjy

我有一个必须修改 iboutlet 属性的属性观察器代码:

@IBOutlet weak var canYouGuessLbl: UILabel! 
 
var isNewUser: Bool = false { 
    didSet { 
        if isNewUser { 
            canYouGuessLbl!.layer.zPosition = 5 
            canYouGuessLbl!.hidden = false 
        } else { 
            canYouGuessLbl!.hidden = true  // Error at this line 
        } 
 
    } 
} 

这会在运行时崩溃,因为 canYouGuessLbl!似乎为零:

fatal error: unexpectedly found nil while unwrapping an Optional value 

我不确定原因以及如何解决这个问题。

请您参考如下方法:

如果您的问题出现在安东尼奥回答的第一个场景中,那么您可以通过将 isNewUser 变量声明为可选变量并在 canYouGuessLbl 完全初始化后在 viewDidLoad 方法上为其赋值来解决它

var isNewUser: Bool! { 
 
    didSet(newValue) { 
 
        if isNewUser != nil && isNewUser! { 
 
            canYouGuessLbl!.layer.zPosition = 5 
            canYouGuessLbl!.hidden = false 
 
        } else if isNewUser != nil && !isNewUser! { 
 
           canYouGuessLbl!.hidden = true 
 
        } 
 
    } 
} 
 
override func viewDidLoad() { 
    super.viewDidLoad() 
    isNewUser = false 
}