我已经耗尽了所有资源。在standardUserDefaults
中存储布尔值的非常简单的过程对我来说不起作用。这是我的测试代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:true forKey:@"BoolKey"];
[defaults setObject:@"Hello!!!" forKey:@"StrKey"];
[defaults synchronize];
BOOL b = [defaults boolForKey:@"BoolKey"]; // b equals NO
NSString *s = [defaults stringForKey:@"StrKey"]; // s equals "Hello!!!"
我无法理解为什么字符串存储正常,而布尔值则没有。有谁有想法吗?我正在使用XCode 6.0.1(6A317)。
更新:我发现更改KeyName实际上解决了我的问题。我的布尔键名为LoginOK
。我将其更改为CredentialsStored
,现在正确加载。奇怪的是......
答案 0 :(得分:3)
我复制粘贴您的代码并执行
在控制台中查看右下角 BOOL返回YES
答案 1 :(得分:1)
此问题与Xcode 6.0.1(6A137)无关。你的代码是正确的。我相信在您调用或执行这些命令时可能会出错。您应该尝试调试,从一个简单的示例开始,并NSlog
值。点击您的iOS Simulator
>> Reset Contents and Settings
然后尝试。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:true forKey:@"BoolKey"];
[defaults setObject:@"Hello!!!" forKey:@"StrKey"];
[defaults synchronize];
BOOL b = [defaults boolForKey:@"BoolKey"];
NSLog(@"%d",b);
NSString *s = [defaults stringForKey:@"StrKey"];
NSLog(@"%@",s);