我在登录时在项目中使用了惰性var。当用户首次成功登录时,懒惰的var userLoginInfo首次从数据库中获取数据,并且显示正确的数据。
当我再次执行登录操作时,它将显示首次初始化的登录数据。那么,如何第二次重新初始化懒惰的var?

lazy var userLoginInfo:LoginInfo = {
        return self.fetchLogin()
    }()

最佳答案

闭包末尾的一对大括号表示,当首次访问该属性时,闭包被称为一次。

但这并不意味着您不能为该属性分配新值。

例如,这是有效的代码

lazy var userLoginInfo : LoginInfo = {
    return self.fetchLogin()
}()

func resetLoginInfo()
{
  userLoginInfo = fetchLogin()
}

如果变量很少更改,这可能很有用。如果不是Josh的答案中所述的计算属性,那是更好的选择。

07-24 14:18