我想解析这个plist结构......请帮忙
我现在使用的是
mainDictionary = __Dictionary::createWithContentsOfFile(plistPath.c_str());
__Dictionary *exit = (__Dictionary*)__Dictionary::createWithDictionary(
(__Dictionary*)mainDictionary->objectForKey(std::string("otherButton")));
但是有些钥匙缺少退出的决定......
答案 0 :(得分:6)
在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中的plist而不是ValueVector,因为你的plist实际上是Dictionary(ValueMap)而不是Array(ValueVector)。
答案 1 :(得分:1)
尝试使用ValueMap和FileUtils加载PList文件。您尝试加载字典的方式来自cocos2d-x v2.x.在cocos2d-x中你应该做这样的事情:
ValueMap mainDictionary = FileUtils::getInstance()->getValueMapFromFile(plistPath.c_str());
ValueMap exit = mainDictionary["otherButton"].asValueMap();
答案 2 :(得分:0)
根本没有名为" ExitButton"在plist的根中(因此在mainDictionary
)。
mainDictionary
键将是" background"," otherButton"和"按钮",每个都返回另一个Dictionary或Array实例。
如果" ExitButton" key在Buttons数组中的某个位置,你必须枚举Buttons数组并找到" ExitButton"键入其中一个数组项。