Objective c NSUserDefaults在离开应用程序后将不会加载
我在我的应用程序中设置了多个NSUserDefaults,这些默认值大部分都可以使用。NSUserDefaults从一个ViewController调用,并在另一个ViewController中实现(例如在具有关卡选择的游戏中)。这似乎很有效,直到用户按下level select屏幕上的back按钮。当他们尝试返回到级别选择viewController时,NSUserDefaults不会加载到屏幕上。 这是我的密码: LevelSelectViewController:Objective c NSUserDefaults在离开应用程序后将不会加载,objective-c,ios,integer,nsuserdefaults,Objective C,Ios,Integer,Nsuserdefaults,我在我的应用程序中设置了多个NSUserDefaults,这些默认值大部分都可以使用。NSUserDefaults从一个ViewController调用,并在另一个ViewController中实现(例如在具有关卡选择的游戏中)。这似乎很有效,直到用户按下level select屏幕上的back按钮。当他们尝试返回到级别选择viewController时,NSUserDefaults不会加载到屏幕上。 这是我的密码: LevelSelectViewController: - (void)view
- (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;
}
}
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"levelRank"];
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];
}
Level1ViewController:
- (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;
}
}
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"levelRank"];
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];
}
设置密钥值后,需要调用[userDefaults synchronize]。自动同步很少发生,因此在这种情况下,当一个人完成一个级别时,同步不会发生 因此,请按如下方式修改代码: Level1ViewController:
- (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;
}
}
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"levelRank"];
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];
}
设置密钥值后,需要调用[userDefaults synchronize]。自动同步很少发生,因此在这种情况下,当一个人完成一个级别时,同步不会发生 因此,请按如下方式修改代码: Level1ViewController:
- (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;
}
}
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"levelRank"];
}
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];
}
第一个问题是您正在创建
userDefaults
的实例,但没有设置任何值。因此,在这里调用同步
实际上什么都不做:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
设置整数
后,需要调用同步
:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];
第一个问题是您正在创建
userDefaults
的实例,但没有设置任何值。因此,在这里调用同步
实际上什么都不做:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
设置整数
后,需要调用同步
:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:1 forKey:@"easyRank"];
[userDefaults synchronize];
您正在为两个不同的键设置值。你期望发生什么
Level1ViewController
需要为levelRank
设置一个值,或者LevelSelectViewController
需要读取easyRank
键的值。您正在为两个不同的键设置值。你期望发生什么
Level1ViewController
需要为levelRank
设置一个值,或者LevelSelectViewController
需要读取easyRank
键的值。对不起,levelRank和easyRank应该是相同的。我想让它更通用一些。现在应该修好了对不起,levelRank和easyRank应该是一样的。我想让它更通用一些。它现在应该被修复了,那么我会在viewDidLoad中放入任何内容还是将其留空?没关系,我知道我需要做什么。谢谢你的帮助。那么我会在viewDidLoad中输入任何内容还是将其留空?没关系,我已经知道我需要做什么了。谢谢你的帮助。