关于Cocos2dx3.6中使用UserDefault的问题

我在AppDelegate.cpp的applicationDidFinishLaunching方法中, 用UserDefault写了一个简单数据的存储

if (!UserDefault::getInstance()->getBoolForKey("init"))
{
UserDefault::getInstance()->setBoolForKey("init", true);
}


```


可是运行到这里, 就报错...  

还请帮忙说一下, 我这是什么问题啊?

谁知道这么是为什么啊?

get时候没有设置默认值

我是这样保存的:
UserDefault::sharedUserDefault()->setIntegerForKey(“age”, 100);
UserDefault::sharedUserDefault()->flush(); // 记得要flush,不然写入到文件

我之前也试过UserDefault::getInstance(),但貌似保存不了。

get的时候设置了默认值也不行

试试楼上的呢,我一般也是sharedUserDefault

你知道原因了吗,求告诉,一直卡在这里不行,快崩溃了都

我也遇到这个问题了,这个是引擎3.6版本的问题,这版引擎在WIN32平台下把UserDefault.xml放在C盘用户的文件夹下了(以前WIN32一直是放在可执行程序的当前路径),而你的用户名很可能是中文的,所以这个路径包含中文名。其实出问题是在这里:FileUtils::getInstance()->isFileExist(***),UserDefault类初始化时调用了这个找文件的函数,但是isFileExist这个函数内部在处理宽字符转换时貌似出错了。
修改方法:1.把FileUtilsWin32::getWritablePath()里的实现修改成获取可执行程序的当前路径
2.修改FileUtilsWin32::isFileExistInternal让它把中文路径转对了
3.更新引擎或许新版修复了呢,这个我不敢保证…

楼主,问题解决了么?原因出在哪,怎么解决的?

这个帖子都没人回复,是不是遇到这个情况的比较少啊。不管了,我还是说说我遇到这个问题时候怎么解决的吧,(输出那里报错说是打开uerdedault失败) 然后我直接删除了原始的userdefault.xml 重新跑一下就OK。希望有帮助!