【问题标题】:NSUserDefaults value changesNSUserDefaults 值更改
【发布时间】:2012-06-07 09:53:25
【问题描述】:

我在 NSUserDefaults 中保存一个 bool 值,如下所示:

[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"password"];

然后我像这样同步默认值:

[[NSUserDefaults standardUserDefaults]synchronize];

但是当我的应用进入后台然后进入前台时,我的 bool 值更改为 YES

为什么会这样?我只在程序中的一个地方将我的 bool 设置为 YES,当我的应用离开/进入前台时,它不会管理。

谢谢!

【问题讨论】:

  • 您用来检索值的代码是什么?
  • 您何时设置该值,在应用程序中的哪个位置?什么时候后台?
  • 您提供的代码没有任何问题,因此错误很可能不在您发布的行中。
  • 我在我的类中使用它,比如 Password.m 我没有在 AppDelegate 中设置任何值
  • 正确检查您设置 NSUSerDefaults 的位置。我认为当您从后台进入应用程序时,某些代码正在执行。

标签: iphone objective-c ios xcode nsuserdefaults


【解决方案1】:

只需执行一个简单的测试,将布尔值保存为

[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"password"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSLog(@"%d",[[NSUserDefaults standardUserDefaults] boolForKey:@"password"]);

看看有什么价值..

【讨论】:

    【解决方案2】:

    您的检索代码应如下所示。

    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"password"]) {
        //False
    } else {
        //True
    }
    

    【讨论】:

      【解决方案3】:

      当您检索布尔值时,请确保您拥有正确的键字符串(在您的情况下为@"password")。区分大小写。

      [[NSUserDefaults standardUserDefaults] boolForKey:@"password"];
      

      在你的整个项目中对这个键进行文本搜索,你会发现有问题的代码。

      【讨论】:

        猜你喜欢
        • 2010-11-11
        • 1970-01-01
        • 2019-06-30
        • 2014-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多