NSNumber как ключ для NSDictionary - PullRequest
       0

NSNumber как ключ для NSDictionary

16 голосов
/ 07 сентября 2011

Мне было интересно, как ключи работают в NSDictionary. Обычно я буду использовать NSString в качестве ключа, например:

NSString *stringKey = @"stringKey";
[mydict objectForKey:stringKey];

Что, если я хочу использовать NSNumber:

NSNumber *numberKey = [NSNumber numberWithInt:3];
[mydict objectForKey:numberKey];

В словаре идет поиск ключа с номером 3? или это будет просто сравнить адрес числа ключ?

Ответы [ 2 ]

14 голосов
/ 07 сентября 2011

Две клавиши равны тогда и только тогда, когда [key1 isEqual:key2]. Некоторые классы могут идти с реализацией -[NSObject isEqual:] return self == other;, но классы (такие как NSString, NSNumber и т. Д.) Довольно часто переопределяют это для более специфичного сравнения контекста.

3 голосов
/ 26 марта 2012

Я думаю, что это будет смотреть на значение NSNumber. Я использую NSNumber в качестве ключа для словаря.

1. сохранить ключ в view.tag

view.tag = [self getUniqueNSIntegerKey]; -> получить уникальный ключ и сохранить в view.tag

[словарь setOjbect: объект forKey: [NSNumber numberWithInt: view.tag]]; // добавляем объект

2. получить объект с помощью view.tag позже

object = [словарь objectForKey: [NSNumber numberWithInt: view.tag]]; // получить объект через view.tag

это просто работает .....

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