不NSUserDefaults的妥善保存(NSUserDefaults not saving pro

2019-07-17 21:53发布

嗨,大家好我遇到的问题NSUserDefaults的,我不太明白这是怎么回事

我的应用具有5个级别,并且每个级别具有不NSUserDefaults的完全相同的事情(检索水平默认值,作为用户播放水平,然后设置默认值,并在电平的端部syncronizes改变的值)的前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

Answer 1:

可能NSUserDefaults的没有机会取决于过程是如何终止保存。

此答案的更多信息: 为什么不NSUserDefaults的救了我的价值观?



Answer 2:

万一有人运行翻过这样的:当存储在用户默认设置一个NSDictionary 的NSArray或(两者的或可变的对象),他们有一个存储对象NSURL,它不会将数据保存在synchonize!



Answer 3:

某处你碰到这样的:

// 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检查返回值是否有错误。



Answer 4:

我决定一边把这个问题和继续发展,其中包括五级后添加的东西,使用户可以遍历水平,并返回到主菜单等等等等...我不知道为什么,但userDefaults是节省了五级,所以我现在不知道这是否是因为之前五级是应用做的最后的事情,即使它并没有终止自己和做其他事情,也许它实际上并没有写入默认磁盘。 ..I'm仍然不知道什么是错的,但它的工作,现在我不能让它失败,看看我是否能与同步得到一个错误?

谢谢您的帮助



文章来源: NSUserDefaults not saving properly