我无法让 NSUserDefaults 工作,尽我所知,有人有同样的问题吗?

I cannot get NSUserDefaults to work, tried all i know, anyone had same issue?

我无法 NSUserDefaults 保存 BOOL 值。这真的很简单,人们也这样做了,但根本无法挽救。我尝试了我所知道的一切。最近的尝试是这样的:

if (_EndHide == YES) {
     NSDictionary *aProperties = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]forKey:@"EndHide"];
     BOOL boolValue;
     if ([aProperties valueForKey:@"EndHide"])
         boolValue = [[aProperties valueForKey:@"EndHide"] boolValue];
} else if (_EndHide == NO) {
     NSDictionary *aProperties = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]forKey:@"EndHide"];

     BOOL boolValue;
     if ([aProperties valueForKey:@"EndHide"])
         boolValue = [[aProperties valueForKey:@"EndHide"] boolValue];
}

我正在为 iPhone 制作一个 iOS 应用程序游戏,当你躲避这些井对象一段时间后,你结束游戏并解锁开始菜单上名为没完没了,故事过后。

现在我需要这个按钮不断解锁。我设法通过一个场景解锁它。一切正常,但不会保持解锁状态。有没有人有任何建议可以帮助我解决这个问题?

这里是无尽的按钮配置和bool配置:

 @property(nonatomic, getter=isActive) bool EndHide;

 @property(nonatomic) IBOutlet UIButton *endless;

这就是按钮和布尔值的所有代码,以使其保持解锁状态。

我知道这很简单,但行不通。也许是一个很深的错误我在 Xcode 的另一个更新版本上尝试过,但仍然无济于事。这个问题一直存在,是一个真正的问题。我什至试过开关保存也没有用。

我实际上看不到任何试图将任何内容保存到用户默认值的代码。您首先需要获取用户默认对象

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];

写入布尔值:

[defaults setBool:YES forKey:@"EndHide"];

读取布尔值:

BOOL boolValue = [defaults boolForKey:@"EndHide"];

修正我可能犯的任何错误。

PS。除非您真正了解它的作用,否则不要使用 valueForKey。使用 objectForKey 或数组语法。

在确实加载的视图中试试这个

NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"0" forKey:@"test"];
NSString * testValue = [prefs ObjectforKey:@"test"];
NSLog(testValue);

你能告诉我控制台打印的是什么吗?

经过几天的寻找,我找到了。发生的事情是,我没有让 bool 始终更改,也就是 YES,我只是用这个保存了另一个 bool: 在视图中确实加载了顶部:

  if (_EndHide == YES) {
       [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"boolSet"];


   } else if (_EndHide == NO) { }

所以当 bool 为 yes 时你完成了游戏而不是这个代码: 在视图中加载顶部: 底部:

   if (![[NSUserDefaults standardUserDefaults] boolForKey:@"boolSet"]) {
     NSLog(@"not workin -.-");
    } else {
       NSLog(@"finallyyyy workin !! YAeh");
       _endless.hidden = NO;
   }

代码总是记得 :D 谢谢大家试图帮助我这个方法是最好的,无尽的是一个按钮,创建另一个保存在内存中的 bool 使用它来解锁按钮。