Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在NSUserDefaults中删除用户默认值?_Iphone_Cocoa Touch_Uikit - Fatal编程技术网

Iphone 如何在NSUserDefaults中删除用户默认值?

Iphone 如何在NSUserDefaults中删除用户默认值?,iphone,cocoa-touch,uikit,Iphone,Cocoa Touch,Uikit,例如,我的应用程序在开始时设置了一些标准默认值。然后这些值可能会被用户覆盖。当用户把事情搞砸时,我想将这些设置设置回我的应用程序默认值。据我所知,应用程序默认值与用户默认值是不同的字典,用户默认值只是覆盖那些应用程序默认值。但我还没有看到删除用户默认值的方法。有什么想法吗?试试——这样你就可以删除偏好了。使用下面的代码 [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"]; 如果要立即保存,请

例如,我的应用程序在开始时设置了一些标准默认值。然后这些值可能会被用户覆盖。当用户把事情搞砸时,我想将这些设置设置回我的应用程序默认值。据我所知,应用程序默认值与用户默认值是不同的字典,用户默认值只是覆盖那些应用程序默认值。但我还没有看到删除用户默认值的方法。有什么想法吗?

试试——这样你就可以删除偏好了。

使用下面的代码

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];
如果要立即保存,请不要忘记同步

[[NSUserDefaults standardUserDefaults] synchronize];
UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()

同步-此方法会定期自动调用,仅当您无法等待自动同步(例如,如果您的应用程序即将退出)或即使未做任何更改也要将用户默认值更新为磁盘上的值时,才使用此方法

Swift 5:

UserDefaults.standard.removeObject(forKey: "MyKey")
UserDefaults.standard.synchronize()
if let bundle = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: bundle)
}

Swift版本便于复制粘贴:

var idForUserDefaults = "somestupidtext"
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.removeObjectForKey(idForUserDefaults)
userDefaults.synchronize()


更新Swift 3.0代码:


UserDefaults.standard.removeObject(forKey:“YOURKEY”)

要删除特定的键值: Swift 3+

UserDefaults.standard.removeObject(forKey: "KEY")
Obj-C

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];

如果需要重置用户默认值/清除所有数据: Swift 3:

UserDefaults.standard.removeObject(forKey: "MyKey")
UserDefaults.standard.synchronize()
if let bundle = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: bundle)
}
斯威夫特4

    UserDefaults.standard.removeObject(forKey: "your_key")
    UserDefaults.standard.synchronize()

快捷方式

[[NSUserDefaults standardUserDefaults] synchronize];
UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()

+1表示[[NSUserDefaults standardUserDefaults]同步];我通常会忘记添加此项。如果您不同步,它将在您关闭应用程序时自动同步。@yucelbayram->yup,但如果您要立即保存,则必须进行同步。@Rajneesh071是的。苹果文档当前说明了同步方法:“等待对默认数据库的任何挂起的异步更新并返回;这个方法是不必要的,不应该使用。“你不需要再使用它了。
类型为“UserDefaults”的值没有成员“remove”
kbunarjo,你有没有尝试过这个方法。LOL.Swift 3-UserDefaults.standard.removeObject(forKey:“Key”)@Jeff他们最近发布了一个更新版本的Swift 3(3.1)。我还没有看文档,所以我想这就是我的版本不再工作的原因。是的,我觉得很有趣:)UserDefaults.standard.removeObject(forKey:“YOURKEY”);苹果文档声明,
.synchronize()
“是不必要的,不应该使用。