我无法让NSUserDefaults工作,我所知道的任何人都有同样的问题吗?

时间:2016-05-26 13:42:45

标签: ios objective-c nsuserdefaults

我无法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;

这就是按钮和bool的所有代码,无论如何都要保持解锁状态。

我知道它很简单,但它不会起作用。也许是一个很深的错误,我在另一个更新版本的Xcode上尝试了它,但仍无济于事。问题是持久的,是一个真正的问题。我甚至尝试过切换保存也没有用。

3 个答案:

答案 0 :(得分:2)

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

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];

写一个bool值:

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

读取bool值:

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

修复我自己可能犯的任何错误。

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

答案 1 :(得分:0)

经过几天的搜索,我发现了它。会发生什么,而不是保持bool改变又名总是YES我只是用这个保存另一个bool: 在视图中加载顶部:

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


   } else if (_EndHide == NO) { }

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

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

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

答案 2 :(得分:-1)

在视图中尝试加载

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

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