我在登录时在项目中使用了lazy var。当用户第一次成功登录时,lazy var userLoginInfo第一次从数据库中获取数据并显示正确的数据。 当我再次执行登录操作时,它会显示第一次初始化的登录数据。那么如何重新初始化lazy var第二次?
lazy var userLoginInfo:LoginInfo = {
return self.fetchLogin()
}()
答案 0 :(得分:3)
闭包末尾的一对括号表示在第一次访问属性时,闭包被称为一次。
但这并不意味着您无法为该物业分配新价值。
例如,这是有效的代码
lazy var userLoginInfo : LoginInfo = {
return self.fetchLogin()
}()
func resetLoginInfo()
{
userLoginInfo = fetchLogin()
}
如果很少更改变量,这可能很有用。如果不是Josh的答案中描述的计算属性是更好的选择。
答案 1 :(得分:0)
我认为最好只在这里使用只读计算属性而不是懒惰,这样每次请求用户时它都会返回数据库中的当前值。
var userLoginInfo:LoginInfo {
return self.fetchLogin()
}