Ожидаемое выражение перед «без знака» -> Цель C - PullRequest
0 голосов
/ 23 мая 2011

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;
           }

При попытке выполнить итерацию я получаю сообщение об ошибкечерез цикл.

EDITED

-(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;
}

Я получаю сообщение об ошибке в этом коде «элемент селектора не имеет допустимого типа объекта».Мне нужно искать wTimerId(key) в m_cAppIdMap.Это то, что я делаю правильно. Комментированные строки над циклом for - это реализация того же кода в cpp.Я не могу сделать ту же логику здесь, в Задаче С.

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Я думаю, вы хотели использовать for вместо if.Кроме того, синтаксис быстрого перечисления
for (x in y) может использоваться только для объектов, которые реализуют протокол NSFastEnumeration - обычно NSArray.Похоже, вы используете массивы C, поэтому этот синтаксис все равно не будет работать.

3 голосов
/ 23 мая 2011

вы намеревались написать for (VARIABLE in CONTAINER) {...} - но ваш пример использует if, а не for.

примечание: ошибочно изменять коллекции, которые вы повторяете во время итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...