2017-02-18 41 views
0

私はUserDefaultsについて知っていて、すぐに習得することができます。ユーザーがアプリケーションにログインするとき、私は彼が 'ログインしている'かどうかを確認するためのキーを保存しています。ユーザーがログアウトするたびにこのキーを解除します。SwiftのUserDefaultsから配列を正しく設定解除する方法

私はそれの設定を解除して保存して:私はまた、ユーザーの詳細情報を持つ配列を保存

UserDefaults.standard.set(true, forKey: "isUserLoggedIn"); 
UserDefaults.standard.set(false, forKey: "isUserLoggedIn"); 

。ログアウトボタンが押されたときにこれを解除する方法を知りたいですか?

詳細を保存するためのコードは次のとおりです。

let array = [storedUsername, storedFirstname, storedSurname, storedUniName, storedUniCourse, storedEmail];   
UserDefaults.standard.set(array, forKey: "UserDetailsArray"); 
UserDefaults.standard.synchronize(); 

私がして削除しようとしている:

UserDefaults.standard.removeObject(forKey: "UserDetailsArray") 

しかし、これは動作しませんので、私は正しいが何であるかを知りたいと思いましたこれを行う方法?ありがとうございました!

EDIT

これは、ログアウト時に私が呼ん完全な機能です。目的は、+また、私は初めてUserDefaultsを設定したので、どこかに多分バグがあるように思えたfalse

@IBAction func LogoutButtonTapped(_ sender: Any) { 
    UserDefaults.standard.set(false, forKey: "isUserLoggedIn"); 
    UserDefaults.standard.removeObject(forKey: "UserDetailsArray") 
    UserDefaults.standard.synchronize(); 
    self.performSegue(withIdentifier: "LoginViewController", sender: self); 
} 
+3

「動作しません」と定義します。 – rmaddy

+0

何も起こらず、値は設定されていません。私は再度ログインすると、古い値が存在するので、それを言います。 – Nouman

+0

'removeObject'とquitの間で' synchronize'を呼び出しますか? – Willeke

答えて

0

UserLoggedInを設定するには、ユーザーの詳細情報の配列を削除するのですか?よく分かりません。どこでも私は私が何かを保存する前にこのスニペットを含め、それが一度コードで実行した後、それを削除:

if let bundle = Bundle.main.bundleIdentifier { 
    UserDefaults.standard.removePersistentDomain(forName: bundle) 
} 

トリックを行うように見えました!情報は今すぐ保存され、検索されます

関連する問題