web-dev-qa-db-ja.com

迅速にNSUserDefault値を自動クリアする方法は?

迅速にnsuserdefault値を自動的にクリアするにはどうすればよいですか?私はすでにこれを試しましたが、私にはうまくいきません...

[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
21

すでに保存されているキーの数を確認します

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)
37
Leo Dabus

Swift Objective-Cコードの対応物はこれです

 let appDomain = NSBundle.mainBundle().bundleIdentifier!

 NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)

Swift 3.

let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
69
RameshVel

Swift 3.0ソリューション

let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain) 
7
Sourabh Sharma
defaults.setObject(nil, forKey: "userEmail")

それを行うと、nilを設定するので、クリアします

6
Danielle Cohen

「自動クリア」はありません。既存のNSUserDefaultsキーをすべて取得し、それらをすべてnilに設定するだけです。

すべてのキーを取得するには、NSUserDefaults dictionaryRepresentationを取得し、そのkeys(Objective-CではallKeys)を取得します。

1
matt