NSUserDefaults的.setValue有效,不是setBool

Bla*_*use 8 objective-c nsuserdefaults

我试图在NSUserDefaults中存储一些设置,但似乎应用程序不会存储setBool值.

这有效:

[[NSUserDefaults standardUserDefaults] setValue: @"hello" forKey: @"test"]; [[NSUserDefaults standardUserDefaults] synchronize];

当我终止应用程序并重新启动它时,该值已保存.但是,当我这样做时:

[[NSUserDefaults standardUserDefaults] setBool: YES forKey: @"test"]; [[NSUserDefaults standardUserDefaults] synchronize]; 关闭应用程序并重新启动后,它将无法保存.

我应该提交错误报告,还是我在这里缺少什么?

谢谢

编辑:

我想我做错了什么.在AppDelegate中,我想检查是否设置了boolForKey,而不是我这样做了:

if (![defaults boolForKey: @"test123"])
[defaults setBool: YES forKey: @"test123"];
Run Code Online (Sandbox Code Playgroud)

...但是,当谈到boolWithKey时,"!" 只检查bool是YES还是NO,如果没有则为零.

Ant*_* MG 9

你怎么能确定它不起作用?我尝试了你的代码,它适用于我.您确定在编写布尔后以正确的方式读取布尔值吗?

这段代码应该工作:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:NO forKey:@"test"];

[defaults synchronize];

BOOL myBool = [defaults boolForKey:@"test"];
Run Code Online (Sandbox Code Playgroud)

  • 因为NO是未设置的默认值.上面的代码没有测试任何东西.我们需要尝试使用YES才能使测试有意义. (2认同)