如何在iOS上正确存储用户数据?带有NSUserDefaults的情况

如何在iOS上正确存储用户数据?带有NSUserDefaults的情况,ios,cocoa-touch,store,nsuserdefaults,Ios,Cocoa Touch,Store,Nsuserdefaults,我正在为iOS设备制作一个应用程序。这不是我的第一个应用,但并不重要。我的应用程序使用NSUserDefaults存储应用程序运行时使用的数据。当用户想要删除应用程序时,所有功能正常。在此之后,以及在同一设备上再次安装/编译应用程序之后,NSUserDefaults中的所有设置都将被删除-看起来应用程序是第一次在此设备上运行 问题是: 如果我想在删除并再次安装应用程序后读取数据,我应该如何存储数据 如果不是NSUserDefaults,则将此数据存储在何处 提前谢谢。您想使用钥匙链,docs 这

我正在为iOS设备制作一个应用程序。这不是我的第一个应用,但并不重要。我的应用程序使用
NSUserDefaults
存储应用程序运行时使用的数据。当用户想要删除应用程序时,所有功能正常。在此之后,以及在同一设备上再次安装/编译应用程序之后,
NSUserDefaults
中的所有设置都将被删除-看起来应用程序是第一次在此设备上运行

问题是:

  • 如果我想在删除并再次安装应用程序后读取数据,我应该如何存储数据
  • 如果不是
    NSUserDefaults
    ,则将此数据存储在何处

  • 提前谢谢。

    您想使用钥匙链,docs


    这是设备上的唯一方法。可能您可以使用iCloud,具体取决于您想要实现的目标。

    您想要使用钥匙链,docs


    这是设备上的唯一方法。可能您可以使用iCloud,具体取决于您想要实现的目标。

    nsuserdefaults不会保留。应用程序沙盒中的任何内容都只针对钥匙链。键链中的值不会被擦除

    因此,对于要保留的值,请使用键链

    但不要把所有东西都放在那里。通常情况下,当用户删除一个应用程序时,他希望这些东西消失



    我能看到的唯一其他方式是您自己的服务器,用户可以在其中存储备份,dropbbox api或icloud

    不保留NSUserDefault。应用程序沙盒中的任何内容都只针对钥匙链。键链中的值不会被擦除

    因此,对于要保留的值,请使用键链

    但不要把所有东西都放在那里。通常情况下,当用户删除一个应用程序时,他希望这些东西消失



    我能看到的唯一其他方式是您自己的服务器,用户可以在其中存储备份、dropbbox api或icloud

    我认为您可以在自定义plist中存储默认值,然后使用icloud,icloud内置于iOS中。iCloud将自动从你的应用程序中备份文档,然后你可以在新安装的应用程序中使用它们,因为苹果会处理这个问题

    看看苹果关于在iCloud上存储关键值数据的官方文档:


    在该链接中,他们解释了如何将iCloud上的关键值数据添加到应用程序中。

    我认为您可以将默认值存储在自定义plist中,然后使用iCloud,iCloud内置于iOS中。iCloud将自动从你的应用程序中备份文档,然后你可以在新安装的应用程序中使用它们,因为苹果会处理这个问题

    看看苹果关于在iCloud上存储关键值数据的官方文档:


    在该链接中,他们解释了如何将iCloud上的关键值数据添加到您的应用程序中。

    是否是删除应用程序后存储数据的唯一方法?是否是删除应用程序后存储数据的唯一方法?保存到自定义plist并使用iCloud将不是一个选项?嗯。。我想知道自己的服务器。我允许用户通过应用内购买购买一些消耗品,我不想在删除应用后删除关于这些物品数量的信息。我想在用户重新安装应用程序时恢复它。问题是当用户想要在其他设备上安装应用程序时。。。嗯,也许自己的服务器比钥匙链更好。或者iCloud,比如说@thedude?保存到自定义plist并使用iCloud将不是一个选项?嗯。。我想知道自己的服务器。我允许用户通过应用内购买购买一些消耗品,我不想在删除应用后删除关于这些物品数量的信息。我想在用户重新安装应用程序时恢复它。问题是当用户想要在其他设备上安装应用程序时。。。嗯,也许自己的服务器比钥匙链更好。或者我可以大声说“那个家伙”?