我对NSUserDefaults有一些问题,我不太明白是怎么回事。
我的应用程序有5个级别,每个级别都用NSUserDefaults做了完全相同的事情(检索级别默认值,在用户播放级别时更改值,然后设置默认值并在级别结束时同步)前4个级别。可以顺利地工作,但最后一级不会保存这些值。应用程序不会崩溃,最后一级也不是最后发生的事情,我甚至在应用程序终止时同步了默认设置。有没有NSUserDefaults的最大尺寸限制,或者有没有任何人能想到我没有的东西,我会发布下面的代码,但就像我说的,前四个级别工作得很好
//header
NSUserDefaults *userData;
@property(nonatomic,retain) NSUserDefaults *userData;
//class file
//Sets the boolean variables for the class to use
userData = [NSUserDefaults standardUserDefaults];
boolOne = [userData boolForKey:@"LevelFiveBoolOne"];
boolTwo = [userData boolForKey:@"LevelFiveBoolTwo"];
boolThree = [userData boolForKey:@"LevelFiveBoolThree"];
boolFour = [userData boolForKey:@"LevelFiveBoolFour"];
boolFive = [userData boolForKey:@"LevelFiveBoolFive"];
boolSix = [userData boolForKey:@"LevelFiveBoolSix"];
boolSeven = [userData boolForKey:@"LevelFiveBoolSeven"];
//End Of Level
[userData setBool:boolOne forKey:@"LevelFiveBoolOne"];
[userData setBool:boolTwo forKey:@"LevelFiveBoolTwo"];
[userData setBool:boolThree forKey:@"LevelFiveBoolThree"];
[userData setBool:boolFour forKey:@"LevelFiveBoolFour"];
[userData setBool:boolFive forKey:@"LevelFiveBoolFive"];
[userData setBool:boolSix forKey:@"LevelFiveBoolSix"];
[userData setBool:boolSeven forKey:@"LevelFiveBoolSeven"];
[userData synchronize];当我切换到使用这些默认值的视图时,它们的值是正确的,但当我终止应用程序并重新启动它时,这些值不会被保存,所有其他级别都执行完全相同的过程这是唯一不起作用的级别。
我已经关注这个问题很长一段时间了,我希望外面的人也遇到了同样的问题,可以给我一些关于他们是如何解决这个问题的见解。
发布于 2009-09-14 05:39:07
我决定把这个问题放在一边,继续开发,其中包括在级别5之后添加一些东西,以便用户可以循环通过级别并返回主菜单等等。我不确定为什么,但userDefaults现在保存到级别5,所以我不知道这是否是因为在级别5之前,应用程序做的最后一件事,即使它没有终止自己并做其他事情,可能它实际上没有将默认值写入磁盘...我仍然不确定哪里出了问题,但它现在可以工作了我不能让它失败,看看我是否可以得到一个同步错误...
谢谢你的帮助
https://stackoverflow.com/questions/1418894
复制相似问题