【问题标题】:Unable to parse plist in Cocos2dx 3.0Cocos2dx 3.0 无法解析 plist
【发布时间】:2014-08-22 09:15:43
【问题描述】:

我想解析这个 plist 结构...请帮助

我现在用的是

mainDictionary = __Dictionary::createWithContentsOfFile(plistPath.c_str());
__Dictionary *exit = (__Dictionary*)__Dictionary::createWithDictionary(
            (__Dictionary*)mainDictionary->objectForKey(std::string("otherButton")));

但是有些键缺少退出字典...

【问题讨论】:

    标签: cocos2d-x cocos2d-x-3.0


    【解决方案1】:

    在 3.0+ 版本中,像 CCDictionary CCArray 这样的数据结构已被弃用。您必须使用 ValueMap 或 ValueVector 等 您可以在 ValueVector > CCValue.h

    文件夹下找到数据结构

    这是阅读此 plist 的代码:

    cocos2d::ValueMap gameData;
    gameData = FileUtils::getInstance()->getValueMapFromFile("data.plist");
    

    如果您想读取值:

    //1
    std::string backgroundValue = gameData.at("background");
    
    //2
    ValueMap otherButtonsMap = gameData.at("otherButton").asValueMap();
    std::string tagValue = otherButtonsMap.at("Tag");
    
    //3
    ValueVector buttonsVector = gameData.at("Buttons").asValueVector();
    ValueMap item0 = buttonsVector.at(0).asValueMap();
    

    其中 gameData 是 ValueMap(或者换句话说是 Dictionary 或 Map 或 HashMap)

    编辑:

    “Wez Sie Tato”的答案是正确的,但在您的情况下,您应该阅读 ValueMap 而不是 ValueVector 中的 plist,因为您的 plist 实际上是 Dictionary(ValueMap) 而不是 Array(ValueVector)。

    【讨论】:

      【解决方案2】:

      尝试使用 ValueMap 和 FileUtils 加载 PList 文件。您尝试加载字典的方式来自 cocos2d-x v2.x。在 cocos2d-x 中你应该这样做:

      ValueMap mainDictionary = FileUtils::getInstance()->getValueMapFromFile(plistPath.c_str());
      
      ValueMap exit = mainDictionary["otherButton"].asValueMap();
      

      【讨论】:

      • 对于“ValueVector”(又名“vector<:value>”)类型没有可行的重载运算符[] 出现此错误,并且对于 mainDictionary,它的给定大小 =0
      • 从我使用 ValueVector 的项目中复制这些行时出错了 :) 现在可以了。
      【解决方案3】:

      在 plist 的根目录中根本没有名为“ExitButton”的键(因此在 mainDictionary 中)。

      mainDictionary 键将是“background”、“otherButton”和“Buttons”,每个都返回另一个 Dictionary 或 Array 实例。

      如果“ExitButton”键位于 Buttons 数组的某个位置,则必须枚举 Buttons 数组并在其中一个数组项中找到“ExitButton”键。

      【讨论】:

      • 我已经编辑了这个问题。我知道你在说什么,但我需要语法,因为我是 UIKit 的 iOS 开发人员。由于我解析字典,它只给出一个键,虽然有很多
      猜你喜欢
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 2018-04-25
      相关资源
      最近更新 更多