2017-11-25 57 views
1

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

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

回答

0

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

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

在闭合的端部的一对大括号指示一旦当属性被访问的第一次封闭被调用。

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

例如,这是有效的代码

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

func resetLoginInfo() 
{ 
    userLoginInfo = fetchLogin() 
} 

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