NSDictionaries (и, действительно, все объекты коллекции Какао) могут содержать только объекты Objective-C, но не примитивы C, такие как int
. Поэтому, если бы вы хранили 0
в словаре, вы бы сделали это так:
[myDictionary setObject:[NSNumber numberWithInt:0] forKey:@"myKey"];
и, следовательно, его получение будет выглядеть так:
NSNumber* resultObj = [myDictionary objectForKey:@"myKey"];
if (resultObj == nil)
{
//Key didn't exist
}
else
{
int result = [resultObj intValue];
//Now do your work.
}
Эта концепция «оборачивания» примитива C в объект для сохранения его в коллекции, а затем «разворачивания» его на другом конце очень распространена в Какао. (Вы также можете заглянуть в NSValue
, если пытаетесь работать с нечисловыми значениями.)