2017-11-25 58 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() 
} 

如果變量將是很少會改變,這可能是有用的。如果不是喬希答案中所描述的計算屬性是更好的選擇。