我使用+[NSUserDefaults standardUserDefaults]来存储应用程序设置。它由大约12个字符串值组成。是否可以永久删除这些值,而不是将它们设置为默认值?
当前回答
这段代码将默认值重置为注册域:
[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
换句话说,它为你在那个应用中注册的每一个键removeObjectForKey。
感谢Ken Thomases在苹果开发者论坛上的发言。
其他回答
你试过使用-removeObjectForKey吗?
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"defunctPreference"];
试试这个,对我很有效。
单行代码
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];
迅速:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.dictionaryRepresentation().keys.forEach { defaults.removeObjectForKey($0) }
如果应用程序设置需要重置是nsuserdefault访问麦克风(我的情况下),一个简单的解决方案是回答从安东尼麦考密克(Iphone -如何启用应用程序访问设备上的媒体?- ALAssetsLibraryErrorDomain Code=-3312 "Global denied access")。
>常规>复位>复位位置警告
这是一个bug或者什么,但是removePersistentDomainForName在清除所有NSUserDefaults值时不起作用。
所以,更好的选择是重置PersistentDomain,你可以通过以下方式来做:
NSUserDefaults.standardUserDefaults().setPersistentDomain(["":""], forName: NSBundle.mainBundle().bundleIdentifier!)
推荐文章
- iPhone上UIView和UILabels的渐变
- keychain上的分发证书中缺少私钥
- 在实现API时,我如何避免在块中捕获自我?
- 如何创建一个Swift Date对象?
- Xcode 4在目标设备上说“finished running <my app>”——什么都没有发生
- 从另一个应用程序打开设置应用程序
- 快速提取正则表达式匹配
- 如何应用梯度的背景视图的iOS Swift应用程序
- 图书馆吗?静态的?动态吗?或框架?另一个项目中的项目
- 如何用SwiftUI调整图像大小?
- Xcode 6 gitignore文件应该包括什么?
- 如何在iPhone/iOS上删除电话号码的蓝色样式?
- 检测视网膜显示
- 如何在UIImageView中动画图像的变化?
- 如何从iPhone访问SOAP服务