我正试图从字典中获取双倍值。我怎样才能在objective-c中实现这个目标?
答案 0 :(得分:11)
Dave's response对您的previous question也适用于此。要在NSDictionary中存储double值,您需要将其装入NSNumber。
要在字典中设置double值,您可以使用如下代码:
[someDict setObject:[NSNumber numberWithDouble:yourDouble] forKey:@"yourDouble"];
并使用以下内容阅读:
double isTrue = [[someDict objectForKey:@"yourDouble"] doubleValue];
答案 1 :(得分:1)
Brad Larson的回答是完全正确的。要详细说明这一点,您必须明确地“包装”非对象编号类型(例如,int
,unsigned int
,double
,float
,{{ 1}}等等,在处理任何需要对象的东西时进入BOOL
。
然而,另一方面,Objective-C中的一些机制,如键值编码(KVC),将自动为您进行此包装。
例如,如果NSNumber
类型@property
名为int
,并且您调用intProperty
NSObject (NSKeyValueCoding)
方法valueForKey:
},返回结果为[ someObject valueForKey:@"intProperty" ]
,而不是NSNumber *
。
坦率地说,我不关心在Objective-C中在对象和非对象类型(特别是int
和struct
s!)之间进行切换。我宁愿将所有东西视为一个对象,但也许这只是我。 :)