Если вы хотите использовать необработанное целое число в качестве ключа к объекту, вы можете использовать вместо него CFMutableDictionaryRef
. Это отбросит вас из слоя Какао в CoreFoundation, но все равно будет работать нормально:
CFMutableDictionaryRef indexMap;
indexMap = CFDictionaryCreateMutable(NULL, 0, NULL, &kCFTypeDictionaryValueCallBacks);
NSUInteger key = 42;
id value = @"The Answer";
CFDictionarySetValue(indexMap, (const void *)key, value);
id value = CFDictionaryGetValue(indexMap, (const void *)key);
CFRelease(indexMap);
Это действительно удобно, если вы собираетесь часто обращаться к этому словарю и не хотите иметь дело с целой кучей временных NSNumber
объектов.
(я игнорирую то, что вы можете это сделать бесплатно, потому что, как только вы начнете манипулировать поведением ключей и значений, вы вообще не захотите считать это NSMutableDictionary
)