不NSUserDefaults的妥善保存
嘿家伙我遇到的问题NSUserDefaults的,我不太明白这是怎么回事不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];
当我切换对于使用这些默认值的视图,它们的值是正确的,但是当我终止应用程序并重新启动它时,这些值不会被保存,每个其他级别都会执行完全相同的过程,这是唯一不起作用的级别。
我已经盯住了很长一段时间,我希望有人在那里遇到同样的问题,并可以给我一些他们如何解决它的见解。
预先感谢您 BWC
某处你碰到这样的:
// load the default values for the user defaults
userDefaultsValuesPath=[[NSBundle mainBundle] pathForResource:@"UserDefaults" ofType:@"plist"];
userDefaultsValuesDict=[NSDictionary dictionaryWithContentsOfFile:userDefaultsValuesPath];
// set them in the standard user defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict];
如果您正在设置的初始默认没有违约LevelFive,则调用会失败。
检查-synchronize的返回值是否存在错误。
我决定抛开这个问题,并继续开发,其中包括添加五级后的东西,所以用户可以循环通过级别并返回到主菜单等,等等......我不知道为什么但是userDefaults现在正在保存第5级,所以我不知道是不是因为在第5级之前是应用程序所做的最后一件事情,即使它没有终止本身,也没有其他的事情可能实际上并没有写默认为磁盘...我仍然不确定什么是错误的,但它现在正在工作,我不能看到它是否可以得到与同步的错误...
感谢您的帮助
万一有人运行翻过这样的:当存储的的NSDictionary或的NSArray在用户的默认值(或可变两者的对象),他们有一个NSURL对象存储,它不会保存synchonize上的数据!
这很烦人吗?! – 2013-05-01 14:41:04
难以分辨您发布的内容。仔细检查保存关卡后的默认值的方法。 – Jordan 2009-09-14 02:59:52