我在一个对象上设置了一些属性,主要是GLfloat
,我想知道是否有办法使用[self setValue:(id)value forKey:(id)key];
来获取c样式变量?
如果有可用替代品,则不必是setValue:forKey
。
我的理由是我在floats
的对象上有很多属性,我可以传递NSDictionary
值(NSNumber
这里没有问题)来设置每个相关值
理想情况下,我可以在没有枚举器或自定义设置器的情况下执行此操作 - 这是可行的吗?
答案 0 :(得分:4)
您可以使用新的Objective-C语法自动将任何值插入NSNumber:
GLfloat alpha;
alpha = 2.3f;
[self setValue:@(alpha) forKey:@"theKey"];
这会自动将浮动转换为NSNumber,而且操作简单。
答案 1 :(得分:4)
同样,
setValue:forKey:
确定了所需的数据类型 指定键的适当访问器或实例变量。如果 数据类型不是对象,然后从中提取值 使用适当的-Value方法传递对象。
你可以传递一个NSNumber
,它会自动转换回你的二传手的浮动。
@interface MyClass ()
@property (nonatomic, assign) CGFloat example;
@end
@implementation MyClass
- (void)testSetter {
[self setValue:@(5.0f) forKey:@"example"];
}
@end