在iOS上保存xml文件(pugiXml和Cocos2d-x)

时间:2013-10-02 20:48:38

标签: ios xml cocos2d-x pugixml

最近我遇到了pugiXml的一个大问题(在cocos2d-x引擎中使用)。

很快,我做了一个问答游戏(在提到的Cocos2d-x中)。我将问题(以及其他一些数据)保存在Xml文件中。在新游戏中,它们被解析并插入到词典中。如果问题得到解答,则会在该Xml文件中插入一个表示答案的短字符串(是否良好 - 是/否)(在该特定问题下面)。之后,我使用这些数据来显示统计数据(我用好的答案计算问题的百分比 - 这是计算Y的数量除以问题的数量,乘以100)。

我用:

CCFileUtils::sharedFileUtils()->fullPathForFilename(o_QA);

获取文件,稍后

pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "rb", &bufferSize);

将文件放入缓冲区和

pugi::xml_parse_result result = doc.load_buffer(pBuffer,bufferSize);

解析数据并开始处理它。

最后,我用以下文件保存文件:

doc.save_file(fullPath.c_str());

机器人:

  • 虽然我不得不将带有问题的文件复制到/ data / data / app / Files /,但它工作得很好。不过,它还是在很多设备上保留了这些变化。

的iOS:

  • 不幸的是,在iOS上它没有用。数据被加载和解析(这意味着,我实际上可以玩游戏),但它们不会被保存。我已经尝试将文件移动到其他文件夹(从Resources / Documents开始,然后是主资源文件夹,资源/库/应用程序支持)。它仍然没有保存数据,我不知道该怎么做。结果是我的统计数据计算不好(你回答问题的方式并不重要 - 所有这些都是错误的,因为Xml文件没有更新)。

有没有人遇到过类似的问题? 你能帮我吗?

1 个答案:

答案 0 :(得分:1)

我正在使用pugixml和cocos2d-x在我自己的应用程序中做类似的事情。所以我可以确认这种组合效果很好。

相反,因为在iOS上你不能同时从应用程序包中读取和写入数据(这是只读的),你需要在可写文档目录中实现一个简单的检查 - 如果你在那里保存了文件,加载它,如果没有,从应用程序包加载。

因此,从本质上讲,如果您保存的文件名是“my_save.xml”,那么这是一个示例流程:

1)通过连接可写文件夹路径+文件名,在可写文件夹中构建保存文件的路径。 CCFileUtils应该有类似getWritablePath()的东西。

2)如果文件存在于文件夹中,请加载它。否则,请转到3)。

3)使用CCFileUtils :: sharedFileUtils() - > fullPathForFilename()构建应用程序包中原始数据文件的路径。从那里加载文件。

要保存,只需执行步骤1并将文件保存在那里。