хеш-таблица в target-c - PullRequest
       2

хеш-таблица в target-c

1 голос
/ 21 марта 2011

Какой класс я могу использовать, чтобы связать индекс в NSMutableIndexSet с объектом?

Ответы [ 3 ]

7 голосов
/ 21 марта 2011

NSDictionary или NSMutableDictionary. Вы можете использовать объекты в качестве ключей.

Существует также NSHashTable.

6 голосов
/ 21 марта 2011

Если вы хотите использовать необработанное целое число в качестве ключа к объекту, вы можете использовать вместо него 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)

2 голосов
/ 21 марта 2011

Вы, вероятно, хотите использовать NS[Mutable]Dictionary. Вы можете обернуть целочисленные индексы в NSNumber через -[NSNumber numberWithUnsignedInteger:] для ключей (это как ручная упаковка примитивов в Java) и добавить пару ключ-значение, используя -[NSMutableDictionary addObject:forKey:].

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