NSUserDefaults registerDefaults如何工作?

5

当我在application:didFinishLaunchingWithOptions:中设置registerDefaults时,我设置了整个应用程序的NSUserDefaults默认值。

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

[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict];
[[NSUserDefaults standardUserDefaults] synchronize];

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


@LordZsolt 进行了更改,因此它不是重复的。 - bogen
https://dev59.com/eW445IYBdhLWcg3wTIjm#4931270 - Mutawe
1个回答

9

Register user defaults设置键的默认值。因此,当应用程序第一次启动时,您不会得到nil、0或false,然后必须在代码中多次测试是否为这种情况。相反,您可以设置类似于“欢迎”的内容。

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

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


3
注册默认值不会覆盖已保存的任何值,因此始终可以使用完整的默认值列表进行调用,这样做是安全的。 - Wain
1
谢谢,我不知道。 - Lord Zsolt
在我看来,这个回答比参考答案更清晰地回答了问题。 - David James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接