如何在iPhone模拟器中重置NSUserDefaults数据?

Tha*_*nks 51 iphone cocoa-touch nsuserdefaults uikit ios

我已经将NSUserDefault数据检索添加到我的应用程序中,这非常好.但是为了进行测试,我想重置我添加到默认数据库的所有数据,以便当用户第一次启动应用程序时,一切都处于状态.

我试着打电话:

[NSUserDefaults resetStandardUserDefaults];

但那没有做任何事情.默认值仍然保存并可以检索.

mem*_*ons 99

你想要的NSUserDefaults removePersistentDomainForName.这将删除应用程序的所有用户默认值:

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
Run Code Online (Sandbox Code Playgroud)

有关该NSUserDefaults课程的更多信息,请参阅Apple文档.

或者,如果你关心的只是iOS模拟器中的数据,你可以通过iOS模拟器>重置内容和设置来实现.

在此输入图像描述

  • 如果我得到用户默认的套件名称删除不要wokr ...`NSUserDefaults(suiteName:"user_manager_remember_user_default")`为什么?? (3认同)

Tom*_*ton 51

最简单的方法是从模拟器中删除应用程序 - 就像你从真实手机中删除它一样,通过点击(点击)并按住直到图标开始振动.这将删除所有应用程序数据,下次从Xcode安装时,它就像第一次一样.

如果您需要保留其他应用程序数据,则有几种选择.

一种方法是在每个默认密钥上使用一些调用removeObjectForKey:的调试代码.

另一种是找到安装模拟器副本的目录,并删除包含首选项的文件.使用它来查找应用程序:

ls -ld ~/Library/Application\ Support/iPhone\ Simulator/User/Applications/*/*.app
Run Code Online (Sandbox Code Playgroud)

应用程序的完整路径将包含名称为UUID的目录.在该目录中,在"库/首选项"中查找首选项文件.删除它,用户首选项已消失.

  • 不知道为什么会收到这么多的票数.从模拟器中删除应用程序是核选项,在大多数情况下都不实用 - 例如自动测试,您希望多次运行测试而无需每次都重新安装应用程序.您可以使用`NSUserDefaults'重置它 - 请参阅我的回答:http://stackoverflow.com/a/9672703/257550 (6认同)
  • 对于初学者,显示的路径在使用BACKSLASH-SPACE转义的目录名中有空格.这让我挂了一分钟,所以我想我会把它叫出来. (2认同)

Jiu*_*hao 7

您可能会发现您已经"写"到用户默认的应用程序都在文件内部删除此.plist文件有效:

user name/Library/Preferences/com.theAppYouAreHandling.plist
Run Code Online (Sandbox Code Playgroud)


dan*_*ane 6

在Swift 2.0中,以下1行将重置应用程序的所有NSUserDefault:

NSUserDefaults.standardUserDefaults().removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)


mmc*_*mmc 5

实际上,这可能并不适用于所有情况,但由于我在模拟器中没有保留任何有价值的信息,我只是从模拟器本身的iPhone菜单中重置内容和设置.