Как получить двойное значение из словаря? - PullRequest
4 голосов
/ 16 января 2010

Я пытаюсь получить двойное значение из словаря. Как я могу сделать это в target-c?

Ответы [ 2 ]

11 голосов
/ 16 января 2010

Ответ Дейва на ваш предыдущий вопрос верно и для этого. Чтобы сохранить двойное значение в NSDictionary, вам нужно будет поместить его в NSNumber.

Чтобы установить двойное значение в словаре, вы должны использовать код, подобный следующему:

[someDict setObject:[NSNumber numberWithDouble:yourDouble] forKey:@"yourDouble"];

и прочитайте его обратно, используя следующее:

double isTrue = [[someDict objectForKey:@"yourDouble"] doubleValue];
1 голос
/ 16 января 2010

Ответ Брэда Ларсона совершенно верный. Чтобы уточнить это немного подробнее, вы должны явно «обернуть» типы необъектных номеров (например, int, unsigned int, double, float, BOOL и т. Д.) В NSNumber при работе с чем-либо, что ожидает объект.

Однако, с другой стороны, некоторые механизмы в Objective-C, такие как Key-Value Coding (KVC), автоматически сделают это для вас.

Например, если у вас есть @property типа int с именем intProperty, и вы вызываете метод NSObject (NSKeyValueCoding) valueForKey:, такой как [ someObject valueForKey:@"intProperty" ], возвращаемый результат будет NSNumber *, НЕ int.

Честно говоря, меня не волнует необходимость переключения между объектными и необъектными типами (особенно struct s и enum s!) В Objective-C. Я бы предпочел, чтобы все воспринималось как объект, но, возможно, это только я. :)

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