如何在swift中重新初始化lazy var?

Pra*_*nit 3 ios swift

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

lazy var userLoginInfo:LoginInfo = {
        return self.fetchLogin()
    }()
Run Code Online (Sandbox Code Playgroud)

vad*_*ian 5

闭包末尾的一对大括号表示该闭包在第一次访问该属性时被调用一次

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

例如这是有效的代码

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

func resetLoginInfo() 
{
  userLoginInfo = fetchLogin()
}
Run Code Online (Sandbox Code Playgroud)

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


Jos*_*ann 1

我认为最好在这里使用只读计算属性而不是惰性的,这样每次您询问用户时它都会返回数据库中的当前值。

var userLoginInfo:LoginInfo {
    return self.fetchLogin()
}
Run Code Online (Sandbox Code Playgroud)