2017-02-23 8 views
-1

Swift3には非常に奇妙な問題があります。私は、彼が最後のセッションで既に認証された後に、ユーザーをアプリケーションにログインさせておきたい。UserDefaultは異なる値を返します

私の問題は、UserDefaultsが時には真実を返し、自分のアカウントにログインしていても間違っていることがあります。問題は私を狂ってしまう。私はboolの値をUserDefaultsに保存していますが、特定の文字列を保存しようとしましたが、問題は解決しません。

誰でもこの問題がありましたか?どんな解決策ですか?

UserDefaults.standard.set(true, forKey: LOGIN) 

そして、これがdidFinishLaunchingWithOptions方法でAppDelegateに私のコードです::私はUserDefaults値を設定した後UserDefaults.standard.synchronize()を呼び出すことをお勧め

if UserDefaults.standard.bool(forKey: LOGIN) { 
    AppData().updateUserInformation() 
} 

答えて

1

私がログインしたときにここで

はコードです。多くの開発者は、これを行う必要はなく、iOSがあなたのために世話をすると言います。

しかし、必ずしもそうであるとは限りません。特に、値を設定した直後に値を読み取ったり、同期されずに失われたりする前に値を読み込んだ場合は、

+1

UserDefaultsは、機会にplistにバックアップされたメモリ内辞書です。ユーザーのデフォルトで設定された値を、同期の有無にかかわらずすぐに読み取ることはできません。詳細については、http://stackoverflow.com/a/40809748/1226963を参照してください。 – rmaddy

+0

私が言っていることは、実践的な経験がそうでないことを示しているということです。異なるスレッドからUserDefaults.standardにアクセスすると、状況が悪化します。 – picciano

関連する問題