首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSUserDefaults未正确保存

NSUserDefaults未正确保存
EN

Stack Overflow用户
提问于 2009-09-13 21:34:20
回答 4查看 18.4K关注 0票数 6

我对NSUserDefaults有一些问题,我不太明白是怎么回事。

我的应用程序有5个级别,每个级别都用NSUserDefaults做了完全相同的事情(检索级别默认值,在用户播放级别时更改值,然后设置默认值并在级别结束时同步)前4个级别。可以顺利地工作,但最后一级不会保存这些值。应用程序不会崩溃,最后一级也不是最后发生的事情,我甚至在应用程序终止时同步了默认设置。有没有NSUserDefaults的最大尺寸限制,或者有没有任何人能想到我没有的东西,我会发布下面的代码,但就像我说的,前四个级别工作得很好

代码语言:javascript
运行
复制
//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];

当我切换到使用这些默认值的视图时,它们的值是正确的,但当我终止应用程序并重新启动它时,这些值不会被保存,所有其他级别都执行完全相同的过程这是唯一不起作用的级别。

我已经关注这个问题很长一段时间了,我希望外面的人也遇到了同样的问题,可以给我一些关于他们是如何解决这个问题的见解。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-13 13:10:46

根据进程的终止方式,NSUserDefaults可能没有保存的机会。

此答案包含更多信息:Why is NSUserDefaults not saving my values?

票数 13
EN

Stack Overflow用户

发布于 2012-08-17 15:39:10

以防有人运行遇到这种情况:当在用户默认设置中存储NSDictionaryNSArray (或两者的可变对象),并且他们存储了NSURL对象时,它不会在同步时保存数据!

票数 4
EN

Stack Overflow用户

发布于 2009-09-14 04:32:38

在某个地方你有类似的东西:

代码语言:javascript
运行
复制
// 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的返回值是否有错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1418894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档