cocos2d-x開發(fā)中,數(shù)據(jù)操作自然是一個(gè)必須面對(duì)的問題。其中,這個(gè)引擎中內(nèi)置了少數(shù)但是卻非常高效率的DS,
例如CCString, CCArray, CCDictionary等。本文要記錄的是CCDictionary使用過程的一個(gè)小問題。
問題描述:遍歷一個(gè)字典。
開始時(shí),我使用了如下想法:
CCArray* arrKey=m_pZombieDict->allKeys();
CCLog("CCArray.count:%d",arrKey->count());
CCObject* pObj = NULL;
CCARRAY_FOREACH(arrKey, pObj)
{
CCInteger* pKey =(CCInteger*)pObj;
if (pKey != NULL)
{
const CCString* pValue=m_pZombieDict->valueForKey(iTag);
//...............others omitted
但是,實(shí)際調(diào)試中卻發(fā)現(xiàn)直接調(diào)用allKeys()函數(shù)會(huì)導(dǎo)致失敗,程序無法進(jìn)行下去。我觀看了一下 CCDictionary的源碼,它也沒有使用上述方案
遍歷一個(gè)字典。對(duì)于allKeys()函數(shù)的調(diào)用不是如上方法。時(shí)間關(guān)系先不細(xì)致追究下去了。反正上述方案不行。通過CCDictionary的源碼及頭文件CCDictionary.h,
發(fā)現(xiàn)了如下常用的(引擎推薦說更高效)方案:
CCDICT_FOREACH(m_pZombieDict, pElement)
{
int key = pElement->getIntKey();
CCString* pSprite = (CCString*)pElement->getObject();
// ......
}
有關(guān)使用上述遍歷宏的使用細(xì)節(jié),請(qǐng)參考頭文件CCDictionary.h中的細(xì)致說明??傊@些源碼中提供了非常細(xì)致的一些重要結(jié)構(gòu)及函數(shù)的使用例子,VERY GOOD!
感謝cocos2d-x的作者!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。