Подтвердить что ты не робот

Как автоматически очистить значения NSUserDefault в swift?

Как я могу автоматически очистить значения nsuserdefault в swift? Я уже пробовал это, но это не работает для меня...

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

Ответ 1

проверить, сколько ключей уже сохранено

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)

update: 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)

Ответ 2

Быстрое копирование для вашего кода objective-c - это

 let appDomain = NSBundle.mainBundle().bundleIdentifier!

 NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)

Swift 3.0

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

Ответ 3

Решение Swift 3.0

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

Ответ 4

defaults.setObject(nil, forKey: "userEmail")

делая это, вы ставите нуль, поэтому вы очищаете

Ответ 5

Нет автоматического сброса. Просто получите все существующие ключи NSUserDefaults и установите их на нуль.

Чтобы получить все ключи, получите NSUserDefaults dictionaryRepresentation и получите его keys (allKeys в Objective-C).