gpt4 book ai didi

objective-c - 离开应用程序后,NSUserDefaults将不会加载

转载 作者:行者123 更新时间:2023-12-01 17:45:02 24 4
gpt4 key购买 nike

我在我的应用程序中设置了多个NSUserDefaults,它们大部分都可以工作。 NSUserDefaults从一个ViewController调用,并在另一个ViewController上实现(例如在具有关卡选择的游戏中)。直到用户按下级别选择屏幕上的“后退”按钮,这似乎都很好。当他们尝试返回选择viewController的级别时,NSUserDefaults不会加载到屏幕上。
这是我的代码:

LevelSelectViewController:

- (void)viewDidLoad
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];

[super viewDidLoad];
}

- (void)Level1DidFinish:(Level1 *)controller
{
[self dismissModalViewControllerAnimated:YES];

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSInteger rank = [userDefaults integerForKey:@"levelRank"];
{
if (rank == 1) {
button2.hidden = NO;

}
}
}

Level1ViewController:
{            
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"levelRank"];
}

最佳答案

您的第一个问题是创建userDefaults的实例,但未设置任何值。因此,在此处调用 synchronize 实际上无济于事:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];

设置 Integer之后,您需要调用 synchronize:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];

关于objective-c - 离开应用程序后,NSUserDefaults将不会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com