Jam*_*mes 0 xcode objective-c nsuserdefaults ios
我试图在NSUserDefaults中存储我的游戏的当前级别,但是当我尝试将其转换为int时它总是返回1.这是测试代码:
[[NSUserDefaults standardUserDefaults] setInteger:34 forKey:@"Current Level"];
NSLog(@"default level raw: %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"Current Level"]);
self.levelNum = [[[NSUserDefaults standardUserDefaults] objectForKey:@"Current Level"] intValue];
NSLog(@"default level num: %i", self.levelNum);
Run Code Online (Sandbox Code Playgroud)
并输出:
default level raw: 34
default level num: 1
Run Code Online (Sandbox Code Playgroud)
只需确保在NSUSerDefaults上调用synchronize:
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:34 forKey:@"Current Level"];
NSLog(@"default level raw: %@", [defaults objectForKey:@"Current Level"]);
[defaults synchronize]; // Call synchronize after set
self.levelNum = [defaults integerForKey:@"Current Level"];
NSLog(@"default level num: %i", self.levelNum);
Run Code Online (Sandbox Code Playgroud)