CCArray* CCDictionary::allKeys()
{
//取得词汇的数量
int iKeyCount = this->count();
if (iKeyCount <= 0) return NULL;
//创建一个iKeyCount大小的CCArray
CCArray* pArray = CCArray::createWithCapacity(iKeyCount);
//定义临时词汇指针变量。
CCDictElement *pElement, *tmp;
if (m_eDictType == kCCDictStr)
{ //如果当前词典查询类型是通过名称字符串。
//遍历所有词汇。
HASH_ITER(hh, m_pElements, pElement, tmp)
{
//取得每一个词汇的名称字符串放入CCArray中。
CCString* pOneKey = new CCString(pElement->m_szKey);
pOneKey->autorelease();
pArray->addObject(pOneKey);
}
}
else if (m_eDictType == kCCDictInt)
{ //如果当前词典查询类型是通过索引。
//遍历所有词汇。
HASH_ITER(hh, m_pElements, pElement, tmp)
{
//取得每一个词汇的名称字符串放入CCArray中。
CCInteger* pOneKey = new CCInteger(pElement->m_iKey);
pOneKey->autorelease();
pArray->addObject(pOneKey);
}
}
return pArray;
}
以上为CCDictionary::allKeys(源码),由
CCString* pOneKey = new CCString(pElement->m_szKey);
pOneKey->autorelease();
pArray->addObject(pOneKey);
CCInteger* pOneKey = new CCInteger(pElement->m_iKey);
pOneKey->autorelease();
pArray->addObject(pOneKey);
可知,可以将键值强制类型转换成CCString 或者CCInteger