如何在swift中自动清除nsuserdefault
值?我已经尝试过了,但它对我不起作用......
[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
答案 0 :(得分:69)
您的objective-c代码的快速对应是
let appDomain = NSBundle.mainBundle().bundleIdentifier!
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)
Swift 3.0
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
答案 1 :(得分:37)
检查已存储的密钥数量
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)
答案 2 :(得分:7)
Swift 3.0解决方案
let appDomain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: appDomain)
答案 3 :(得分:6)
defaults.setObject(nil, forKey: "userEmail")
这样做,你把nil,所以你清除
答案 4 :(得分:1)
没有"自动清除"。只需获取所有现有的NSUserDefaults密钥并将它们全部设置为nil。
要获取所有密钥,请获取NSUserDefaults dictionaryRepresentation
并获取其keys
(Objective-C中的allKeys
)。