[NSUserDefaults standardUserDefaults] 的持久性如何?

Posted

技术标签:

【中文标题】[NSUserDefaults standardUserDefaults] 的持久性如何?【英文标题】:How persistent is [NSUserDefaults standardUserDefaults]? 【发布时间】:2011-03-09 04:02:36 【问题描述】:

我正在使用 [NSUserDefaults standardUserDefaults] 来存储应用程序设置。

我的问题是:

这些设置会在应用删除时移除吗? 它们是否在应用程序更新后保留(通过 应用商店)?

因为我使用它来存储密码,并且不希望我的用户在每次更新时都重置密码。另外,我希望重置密码的唯一方法是删除应用程序并重新安装。

NSUserDefault 是正确的选择吗?

谢谢, 杰里米

【问题讨论】:

【参考方案1】:

是的,它们会在应用程序删除时被删除,是的,它们会在应用程序更新时被保留。

但是,不建议您将敏感数据存储在 NSUserDefaults 中,相反我会考虑使用钥匙串。

【讨论】:

谢谢汤姆!正是我需要的那种回应。 嗨,Tom 和 jchatard,感谢您的帖子,它也对我有帮助。但是,如果我想在应用程序被删除的情况下存储数据,还有吗?喜欢使用 plist 吗?我的情况是存储用户是否有应用内购买项目的信息。显然,如果他们删除并重新安装应用程序,我不想再次向他们收费。还是应用商店在他们的 iTunes 帐户中记住他们的购买历史?谢谢。 当一个应用程序被删除时,它的所有数据都会随之删除。我不知道商店是否记得用户购买了什么。 唯一的方法是使用云存储,这也可以让您在运行您的应用程序的多个设备之间“同步”首选项 @Anthony SKPayment.defaultQueue().restoreCompletedTransactions() 会起作用。【参考方案2】:

我在我的应用程序中使用 NSUserDefaults 来允许我的同事对我的应用程序进行额外访问。他们只需在设置中输入密码字即可完全打开应用程序。

每次我更新应用程序时,他们都必须重新输入代码字,所以我会根据经验说更新后不会保留它们。需要重新输入值。

【讨论】:

以上是关于[NSUserDefaults standardUserDefaults] 的持久性如何?的主要内容,如果未能解决你的问题,请参考以下文章

NSUserDefaults 简介

将UIColor保存到NSUserDefaults并从NSUserDefaults加载

NSUserDefaults 不可靠?

何时(不)滥用 NSUserDefaults

首选项(NSUserDefaults)崩溃?

iOS之NSUserDefaults的用法