即,我的应用程序在开始时设置了一些标准默认值。然后,这些值可能会被用户覆盖。当用户搞砸时,我想将这些设置恢复为我的应用默认值。据我了解,应用程序默认设置与用户默认设置是不同的词典,而用户默认设置仅覆盖那些应用程序默认设置。但是我还没有看到删除用户默认值的方法。任何的想法?
即,我的应用程序在开始时设置了一些标准默认值。然后,这些值可能会被用户覆盖。当用户搞砸时,我想将这些设置恢复为我的应用默认值。据我了解,应用程序默认设置与用户默认设置是不同的词典,而用户默认设置仅覆盖那些应用程序默认设置。但是我还没有看到删除用户默认值的方法。任何的想法?
Answers:
尝试removeObjectForKey
-应该可以删除首选项。
使用此代码
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];
如果要立即保存,请不要忘记同步
[[NSUserDefaults standardUserDefaults] synchronize];
同步-此方法会定期自动调用,仅当您无法等待自动同步(例如,如果您的应用程序即将退出)或您想要将用户默认值更新为磁盘上的默认值时,才使用此方法尽管您尚未进行任何更改。
斯威夫特5:
UserDefaults.standard.removeObject(forKey: "MyKey")
UserDefaults.standard.synchronize()
Swift版本,方便复制粘贴:
var idForUserDefaults = "somestupidtext"
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.removeObjectForKey(idForUserDefaults)
userDefaults.synchronize()
要么
NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext")
NSUserDefaults.standardUserDefaults().synchronize()
.synchronize()
“是不必要的,不应该被使用。developer.apple.com/documentation/foundation/userdefaults/...
迅捷3+
UserDefaults.standard.removeObject(forKey: "KEY")
对象
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
斯威夫特3:
if let bundle = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: bundle)
}
更新了Swift 3.0代码:
UserDefaults.standard.removeObject(forKey: "YOURKEY")
Value of type 'UserDefaults' has no member 'remove'
在Swift 4中
UserDefaults.standard.removeObject(forKey: "your_key")
UserDefaults.standard.synchronize()