【发布时间】:2013-12-28 18:56:49
【问题描述】:
我一直在尝试使用 NSUserDefaults 来保存玩家在我的游戏中所处的级别。
我一直在互联网上查找,似乎您将一个对象保存在应用程序委托文件中的“-(void)didEnterBackground:(UIApplication)application”中,每当您启动一个新项目时它都会为您提供。
然后你可以在它给你的'-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions'中加载保存的对象。 (对不起,我不知道我是编程新手)。
如果我输入:
//In appDelegate.m, to save the data
-(void)didEnterBackground:(UIApplication)application
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:levelCounter forKey:@"levelCounterKey";
[defaults synchronize];
}
//also in appDelegate.m, to load the data
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
NSNumber *levelCounter = [defaults objectForKey:@"levelCounterKey";
显然这应该可以,但是当我这样做时,它似乎没有保存级别的值,每当我再次运行应用程序时 levelCounter 变量为 0,尽管事实上当我停止运行应用程序时它是 1 或 2。
如果有帮助,我正在使用 sprite kit 并且目前在模拟器中运行它。
任何建议将不胜感激。
感谢您的时间和精力。
【问题讨论】:
-
您是否复制并粘贴了您的代码?缺少几个“]”
-
levelCounter未定义 + 仅当应用程序设置在后台时才保存。不是在应用程序被杀死时。否则你关于NSUserDefault的代码似乎没问题
标签: ios iphone objective-c ios7 sprite-kit