Objective c 在'之前的预期表达式;未签名'-&燃气轮机;目标C
m_cAppIdMap是字典的对象。 我希望遍历字典,并将值pEvent.wTimerId作为键存储在字典中,它是一个无符号短整数Objective c 在'之前的预期表达式;未签名'-&燃气轮机;目标C,objective-c,Objective C,m_cAppIdMap是字典的对象。 我希望遍历字典,并将值pEvent.wTimerId作为键存储在字典中,它是一个无符号短整数 if(unsigned short* key in m_cAppIdMap) //error:Expected expression before 'unsigned' { (void)[self findAndRemoveEvent:pEvent]; (void)CFDictionaryRem
if(unsigned short* key in m_cAppIdMap) //error:Expected expression before 'unsigned'
{
(void)[self findAndRemoveEvent:pEvent];
(void)CFDictionaryRemoveValue(m_cAppIdMap,&wTimerId);
free(pEvent);
bReturn = YES;
}
当我尝试遍历循环时,我遇到了一个错误
编辑
-(BOOL)KillTimer:(unsigned short)wTimerId
{
stRs232Timer* pEvent;
BOOL bReturn=FALSE;
theLock = [[NSLock alloc]init];
if ([theLock tryLock]) {
// if ( m_cAppIdMap.Lookup(wTimerId,pEvent) )
// {
// (void)findAndRemoveEvent(pEvent); // remove from event queue
// (void)m_cAppIdMap.RemoveKey(wTimerId); // remove from app map
for(wTimerId in m_cAppIdMap)
{
(void)[self findAndRemoveEvent:pEvent];
(void)CFDictionaryRemoveValue(m_cAppIdMap,&wTimerId);
free(pEvent);
bReturn = YES;
}
[theLock unlock];
}
return bReturn;
}
此代码中出现错误“选择器元素没有有效的对象类型”。我需要在m_cAppIdMap中搜索
wTimerId(key)
。我所做的是正确的吗?for循环上面的注释行是cpp中相同代码的实现。我无法在目标C中使用相同的逻辑。您打算为(容器中的变量){…}编写——但是您的示例使用if
,而不是for
旁注:在迭代过程中对迭代的集合进行变异是错误的。我认为您的意思是对
使用,而不是在
时使用。此外,快速枚举语法
for(x in y)
只能用于实现NSFastEnumeration
协议的对象,通常NSArray
。看起来你使用的是C数组,所以这种语法无论如何都不起作用。@Chris&Justin:谢谢。错误被清除了,但我仍然找不到如何在字典m_cAppIdMap(包含wTimerIdMap(键)和pEvent(值)的字典)中查找wTimerId(键),pEvent(值),如果我用for“for(m_cAppIdMap中的wTimerId)”进行更正的话'我在循环的末尾指出''选择器元素没有有效的对象类型'