Как автоматически очистить значения NSUserDefault в swift? [дубликат]
этот вопрос уже есть ответ здесь:
Как я могу автоматически очистить nsuserdefault
значения в swift? Я уже пробовал это, но это не работает для меня...
[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
5 ответов
проверьте, сколько ключей уже хранится
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.0
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
Решение Swift 3.0
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
нет "auto clear". Просто получите все существующие ключи NSUserDefaults и установите их все в ноль.
чтобы получить все ключи, получите NSUserDefaults dictionaryRepresentation
и keys
(allKeys
в Objective-C).