我有一个问答游戏,当答案是正确的,一个带勾号的图片将出现。由于我有很多领域,需要应用程序来记住下次启动时已完成哪些工作。我正在使用NSUserDefaults。它工作的很好,但问题是,在第一次启动时显示所有“完成”图像。我试图绕过BOOL逻辑,但没有成功。NSUserDefaults布尔逻辑
.H
BOOL doneState;
的.m
- (void)viewDidLoad{
[super viewDidLoad];
[self doneHidden];
[self checkBools];
}
- (void)checkBools{
//--------NSUserDefaults & tick sign hidden
BOOL saved = [[NSUserDefaults standardUserDefaults] boolForKey:@"hiddenDone"];
NSLog (@"Value of my saved BOOL = %@", saved ? @"YES" : @"NO");
done.hidden = saved;
}
-(void)doneHidden{
done.hidden = YES;
}
当用户退出应用程序,方法如下能够记忆BOOL值
-(IBAction)flipBack:(id)sender{
if (done.hidden == NO) {
doneState = NO;
}
else {
doneState = YES;
}
[[NSUserDefaults standardUserDefaults] setBool:doneState forKey:@"hiddenDone"];
NSLog (@"Value of BOOL 1 = %@", doneState ? @"YES" : @"NO");
}
的想法是第一隐藏名为ImageView的“完成”,然后运行BOOL。控制台在第一次启动时给出结果,即使它是这样设置的,它也不会被隐藏。
控制台输出:
Value of my saved BOOL = NO;
我怎样才能提高它的逻辑是什么?在第一个推出
- 隐藏图像
- 如果退出应用程序检查,如果图像是可见的,并创建BOOL
- 下一页推出阅读BOOL和显示图像如果以前保存的如此
第一次启动时,没有存储任何值,因此您将收到NO。 – jrturton 2013-02-23 12:02:51
因此,也许将含义从“隐藏”改为“回答”或任何其他内容,以便所有内容都以NO开头。 – jrturton 2013-02-23 12:08:41