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

时间:2017-11-25 11:24:11

标签: ios swift

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

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

2 个答案:

答案 0 :(得分:3)

闭包末尾的一对括号表示在第一次访问属性时,闭包被称为一次

但这并不意味着您无法为该物业分配新价值。

例如,这是有效的代码

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

func resetLoginInfo() 
{
  userLoginInfo = fetchLogin()
}

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

答案 1 :(得分:0)

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

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