我使用+[NSUserDefaults standardUserDefaults]来存储应用程序设置。它由大约12个字符串值组成。是否可以永久删除这些值,而不是将它们设置为默认值?


当前回答

迅速:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.dictionaryRepresentation().keys.forEach { defaults.removeObjectForKey($0) }

其他回答

如果应用程序设置需要重置是nsuserdefault访问麦克风(我的情况下),一个简单的解决方案是回答从安东尼麦考密克(Iphone -如何启用应用程序访问设备上的媒体?- ALAssetsLibraryErrorDomain Code=-3312 "Global denied access")。

>常规>复位>复位位置警告

以下是Swift的答案:

let appDomain = NSBundle.mainBundle().bundleIdentifier!
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)

这是一个bug或者什么,但是removePersistentDomainForName在清除所有NSUserDefaults值时不起作用。

所以,更好的选择是重置PersistentDomain,你可以通过以下方式来做:

NSUserDefaults.standardUserDefaults().setPersistentDomain(["":""], forName: NSBundle.mainBundle().bundleIdentifier!)

试试这个,对我很有效。

单行代码

[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]];

我发现了这个:

osascript -e 'tell application "iOS Simulator" to quit'
xcrun simctl list devices | grep -v '^[-=]' | cut -d "(" -f2 | cut -d ")" -f1 | xargs -I {} xcrun simctl erase "{}"

来源:https://gist.github.com/ZevEisenberg/5a172662cb576872d1ab