получить значение через ключ в словаре - PullRequest
0 голосов
/ 25 мая 2011

Мне нужно получить значение для конкретного ключа на карте,

id val = [m_cAppIdMap valueForKey:wTimerIds];

, где wTimerIds - это короткое целое число без знака.

Исключение во время выполнения: EXC_BAD_ACCESS

Предупреждение: передача аргумента 1 в valueForKey: делает указатель из целого числа без приведения

РЕДАКТИРОВАНИЕ:

 NSNumber* val = [m_cAppIdMap valueForKey:[NSNumber numberWithUnsignedShort:wTimerIds]];

Предупреждение, которое я получаю,несовместимые типы Objective C 'struct NSNumber *', ожидаемый 'struct NSString *' при передаче аргумента 1 'valueForKey:' из отличного типа Objective C

Исключение времени выполнения, которое я получаю, равно [NSCFNumber length]: нераспознанный селектор отправлен в экземпляр 0x100110c20

Я храню ключ как unsignedshort в dictioanry.so я пытаюсь найти значение в словаре с этим типом данных.

Ответы [ 2 ]

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

Вы не можете иметь примитивное целое число в качестве ключа. Ключи должны быть объектом. Вы можете заключить это целое число в NSString для использования в качестве ключа.

NSString *key = [NSString stringWithFormat:@"%d", wTimerIds];
[m_cAppIdMap setValue:val forKey:key];
id val = [m_cAppIdMap valueForKey:key];

Или вы можете обернуть это в NSNumber тоже. Вам нужно использовать одно и то же для настройки и получения. То есть, если вы используете строку в setValue:forKey:, вам нужно использовать строку для valueForKey:. Точно так же, если вы используете NSNumber, то вам нужно использовать это в обоих местах.

2 голосов
/ 25 мая 2011

Вы должны использовать

NSNumber *wTimerIdsNum = [NSNumber numberWithInt:wTimerIds];
id val = [m_cAppIdMap objectForKey:wTimerIdsNum];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...