2010-01-15 3 views

ответ

10

Dave's response соответствует вашему previous question. Чтобы сохранить двойное значение в NSDictionary, вам нужно будет установить его в NSNumber.

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

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

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

double isTrue = [[someDict objectForKey:@"yourDouble"] doubleValue]; 
1

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

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

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

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

Смежные вопросы