Objective c 在'之前的预期表达式;未签名'-&燃气轮机;目标C

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

m_cAppIdMap是字典的对象。 我希望遍历字典,并将值pEvent.wTimerId作为键存储在字典中,它是一个无符号短整数

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)”进行更正的话'我在循环的末尾指出''选择器元素没有有效的对象类型'