使用NSUserDefaults存储许多值会导致问题吗?

时间:2013-01-23 05:46:37

标签: iphone ios cocoa-touch nsuserdefaults persistent-storage

我创建了一个应用程序,它将使用用户名,密码登录,并允许用户从服务器下载文件。在我的应用程序中,一旦用户登录应用程序,我必须保留少量数据。

保留用户名,密码,用户下载列表,订阅计划等数据。数据可以通过NSUserDefaults,Plist等保存在应用程序中。但我觉得使用NSUserDefaults存储和检索值很容易。由于我需要在许多视图控制器中使用这些值,我更喜欢NSUserDefaults

这是最佳做法吗?使用太多NSUserDefaults会导致陷阱? 告诉我还有其他方法来保存数据并在cocoa-touch中轻松检索它吗?

3 个答案:

答案 0 :(得分:2)

您可以使用NSUserDefaults存储用户数据。

但对于UsernamePassword等高度敏感的数据,我更喜欢keychain来存储它们。

请检查以下链接以获取钥匙串:

  1. Simple iphone keychain access
  2. saving email password to keychain in ios
  3. howto use keychain in iphone sdk

答案 1 :(得分:2)

在我看来,如果你想存储很少的数据,比如用户名,密码或一些BOOL,你可以使用NSUserDefaults。

由于NSUserDefaults是常见的plist,如果您想存储一些数据(如下载链接),最好使用自定义plist。

如果你想存储一些大数据,比如UIImage,你可以使用NSCache,但它可能会驱逐数据。

如果要存储大量数据,最好使用数据库。

答案 2 :(得分:0)

我会考虑使用像https://github.com/kishikawakatsumi/UICKeyChainStore这样的库,它只是ios钥匙串存储的一个非常好的包装器,并将敏感数据存储在用户钥匙串中,而不是用户默认的plist,因为它更安全。< / p>

至于数据是否不安全,没有理由你不能将它们写出来并加载回来?