2017-11-25 12 views
1

ログイン時に私のプロジェクトでlazy varを使用しています。ユーザーが最初に正常にログインすると、lazy var userLoginInfoはデータベースからデータを最初に取得し、正しいデータを表示します。 そのときに再びログイン操作を実行すると、最初に初期化されたログインデータが表示されます。どのように怠惰なvarを二度目に再初期化するのですか?怠惰な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() 
} 

です。そうでなければ、ジョシュの答えに記載されている計算されたプロパティが良い選択です。

関連する問題