NSUserDefaults如何注册默认工作?

bog*_*gen 5 nsuserdefaults ios

当我在i中设置registerDefaults时,application:didFinishLaunchingWithOptions:通过应用程序设置NSUserDefaults的默认值.

NSMutableDictionary *defaultsDictionary = [@{@"userHasLoggedInOnce":@NO, @"firstTimeOpeningApp":@YES} mutableCopy];

[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

registerDefaults如何存储它只设置了一次这些值,因为它每次都在应用程序启动时被调用?它是一个自己的值,也设置为standardUserDefaults值?如果是这样,是否可以重置默认值?

Lor*_*olt 9

注册用户默认值为键设置默认值.因此,当应用程序第一次启动时,您将不会得到nil,0或false,然后必须通过代码测试很多次(如果是这种情况).而是设置类似"欢迎"的东西.

编辑:注册域的内容不写入磁盘; 每次应用程序启动时都需要调用此方法.您可以将plist文件放在应用程序的Resources目录中,并使用从该文件读入的内容调用registerDefaults:.(来源)

正如注释所解释的那样,调用registerUserDefaults不会覆盖savedValues,因此每次应用程序启动时都可以安全地调用它.您可以添加一个重置按钮,用户可以使用plist中的值覆盖保存的值(默认值).

  • 注册默认值不会覆盖任何已保存的值,因此使用一组完整的默认值始终可以安全地调用. (3认同)