【问题标题】:Saving xml file on iOS (pugiXml and Cocos2d-x)在 iOS 上保存 xml 文件(pugiXml 和 Cocos2d-x)
【发布时间】:2013-10-02 20:48:38
【问题描述】:

最近我遇到了一个关于 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 开始,然后是主 Resources 文件夹、Resources/Library/Application Support)。它仍然没有保存数据,我不知道该怎么做。结果是我的统计数据没有被很好地统计(不管你如何回答问题 - 所有问题都是错误的,因为 Xml 文件没有被更新)。

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

【问题讨论】:

  • 如何获取文档目录?检查这个:stackoverflow.com/questions/6907381/…
  • 我正在使用 fullPathForFilename 方法(o_QA 是一个字符串)。我尝试使用 o_QA 值,例如“Documents/Questions.xml”(在 Resources 中创建了 Documents 文件夹)、“Questions.xml”(在 Resources 文件夹中的 Questions.xml)或“Libary/Application Support/Questions.xml”(创建了 Library/资源文件夹中的应用程序支持文件夹结构)。我错了吗,我应该首先获取 Documents 文件夹的另一个路径(类似于 Android),这不是在资源中创建的文件夹吗?然后在那里复制我的文件并处理该复制的文件?你知道(在 cocos2d-x 中)获取这样一个文件夹的方法吗?
  • 听起来你试图写入应用程序包中的路径,这不起作用,包是只读的。是的,你需要使用 iOS 系统方法获取文档目录来获取这些路径因为它们位于应用程序沙箱目录中的捆绑包之外。

标签: ios xml cocos2d-x pugixml


【解决方案1】:

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

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

所以本质上对于加载,如果您保存的文件名是“my_save.xml”,这里是一个示例流程:

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

2) 如果文件夹中存在文件,则加载它。否则,执行3)。

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

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

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多