迅速にnsuserdefault
値を自動的にクリアするにはどうすればよいですか?私はすでにこれを試しましたが、私にはうまくいきません...
[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
すでに保存されているキーの数を確認します
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
別のキーを追加する
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey1")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey2")
すでに保存されているキーの数をもう一度確認します(+2)
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
キーのオブジェクトを削除するループを作成します
for key in NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys {
NSUserDefaults.standardUserDefaults().removeObjectForKey(key.description)
}
もう一度キーを確認してください
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array.count)
更新:Xcode 7.2.1•Swift 2.1.1(NSUserDefaultsはプレイグラウンドでは動作しないため、実際のプロジェクトでテストする必要があります)
print(Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys).count)
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey1")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "justAnotherKey2")
print(Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys).count)
for key in Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys) {
NSUserDefaults.standardUserDefaults().removeObjectForKey(key)
}
print(Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys).count)
Swift Objective-Cコードの対応物はこれです
let appDomain = NSBundle.mainBundle().bundleIdentifier!
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)
Swift 3.
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
Swift 3.0ソリューション
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
defaults.setObject(nil, forKey: "userEmail")
それを行うと、nilを設定するので、クリアします
「自動クリア」はありません。既存のNSUserDefaultsキーをすべて取得し、それらをすべてnilに設定するだけです。
すべてのキーを取得するには、NSUserDefaults dictionaryRepresentation
を取得し、そのkeys
(Objective-CではallKeys
)を取得します。