只是想知道从以下内容中提取 a 的语法是CGFloat
什么NSDictionary
:
slider.minimumValue = [filterAttributes valueForKey:kCIAttributeSliderMin];
只是想知道从以下内容中提取 a 的语法是CGFloat
什么NSDictionary
:
slider.minimumValue = [filterAttributes valueForKey:kCIAttributeSliderMin];
AnNSDictionary
只持有对象。什么样的对象会包装一个像这样的原语CGFloat
?NSNumber
会有意义。现在,由于CGFloat
是 afloat
或 a double
,您可能希望获得double
保留精度/范围的值。
所以:
slider.minimumValue = [[filterAttributes valueForKey:kCIAttributeSliderMin] doubleValue];
您只能将 OBJECTS 放入 NSDictionary(或 NSARRAY)中。CGFloat 是一个文字(只是映射到一个浮点数),所以你不能把它放入字典或从字典中检索它。
相反,将其包装为 NSNumber(当您将其添加到字典中时),它是一个对象。
NSNumber *sliderMin = [NSNumber numberWithFloat:kCIAttributeSliderMin]
或者使用新的语法,你可以说@kCIAttributeSliderMin
或@(kCIAttributeSliderMin)
自动装箱为 NSNumber。
要取回该值,您将检索对象,NSNumber
然后说,[myNumber floatVal]
以获取NSFloat
.
最后,你可能想说“ objectForKey
”不是“ valueForKey
”。
更新-抱歉,在您的示例中,您将kCIAttributeSliderMin
其视为键,而我将其用作“值”;但我想你明白了。存储一个 NSNumber 对象;检索一个 NSNumber 对象。对于可能造成的任何混乱交换,我们深表歉意。