您好,登錄后才能下訂單哦!
cocos2d-x開發(fā)中,數(shù)據(jù)操作自然是一個必須面對的問題。其中,這個引擎中內(nèi)置了少數(shù)但是卻非常高效率的DS,
例如CCString, CCArray, CCDictionary等。本文要記錄的是CCDictionary使用過程的一個小問題。
問題描述:遍歷一個字典。
開始時,我使用了如下想法:
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
但是,實際調(diào)試中卻發(fā)現(xiàn)直接調(diào)用allKeys()函數(shù)會導致失敗,程序無法進行下去。我觀看了一下 CCDictionary的源碼,它也沒有使用上述方案
遍歷一個字典。對于allKeys()函數(shù)的調(diào)用不是如上方法。時間關系先不細致追究下去了。反正上述方案不行。通過CCDictionary的源碼及頭文件CCDictionary.h,
發(fā)現(xiàn)了如下常用的(引擎推薦說更高效)方案:
CCDICT_FOREACH(m_pZombieDict, pElement)
{
int key = pElement->getIntKey();
CCString* pSprite = (CCString*)pElement->getObject();
// ......
}
有關使用上述遍歷宏的使用細節(jié),請參考頭文件CCDictionary.h中的細致說明??傊?,這些源碼中提供了非常細致的一些重要結(jié)構(gòu)及函數(shù)的使用例子,VERY GOOD!
感謝cocos2d-x的作者!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。