Ser*_*nce 2 iphone cocoa-touch nsdictionary ios
只是不知道什么语法将提取CGFloat出的NSDictionary类似如下:
slider.minimumValue = [filterAttributes valueForKey:kCIAttributeSliderMin];
Run Code Online (Sandbox Code Playgroud)
一个NSDictionary只能容纳对象.什么样的对象会包裹原始像CGFloat?NSNumber会有意义的.现在,既然CGFloat是a float或a double,你可能想要获得double保存精度/范围的值.
因此:
slider.minimumValue = [[filterAttributes valueForKey:kCIAttributeSliderMin] doubleValue];
Run Code Online (Sandbox Code Playgroud)
您只能将OBJECTS放入NSDictionary(或NSARRAY).CGFloat是一个文字(只是映射到浮点数),所以你不能把它放入或从字典中检索它.
而是将其包装为NSNumber(当您将其添加到字典中时),这是一个对象.
NSNumber *sliderMin = [NSNumber numberWithFloat:kCIAttributeSliderMin]
Run Code Online (Sandbox Code Playgroud)
或者使用新语法,您可以说@kCIAttributeSliderMin或@(kCIAttributeSliderMin)将自动装箱作为NSNumber.
要获取值,您将检索该对象,NSNumber然后说,[myNumber floatVal]以获取NSFloat.
最后,你可能想说" objectForKey"不是" valueForKey".
更新 - 抱歉,在您的示例中,您将其kCIAttributeSliderMin视为一个键,我将其用作"值"; 但我认为你明白了.存储NSNumber对象; 检索NSNumber对象.对于可能导致的任何混淆交换,我们深表歉意.