我在一个对象上设置了一些属性,主要是GLfloat
我想知道是否有一种方法可以使用[self setValue:(id)value forKey:(id)key];
ac 样式变量?
setValue:forKey
如果有可用的替代方案,则不必是替代方案。
我的理由是我在一个对象上有很多属性,floats
我可以传递一个NSDictionary
带有值(NSNumber
这里没有问题)来设置每个相关值。
理想情况下,我可以在没有枚举器或自定义设置器的情况下做到这一点——这可行吗?
我在一个对象上设置了一些属性,主要是GLfloat
我想知道是否有一种方法可以使用[self setValue:(id)value forKey:(id)key];
ac 样式变量?
setValue:forKey
如果有可用的替代方案,则不必是替代方案。
我的理由是我在一个对象上有很多属性,floats
我可以传递一个NSDictionary
带有值(NSNumber
这里没有问题)来设置每个相关值。
理想情况下,我可以在没有枚举器或自定义设置器的情况下做到这一点——这可行吗?
您可以使用新的 Objective-C 语法自动将任何值装箱到 NSNumber 中:
GLfloat alpha;
alpha = 2.3f;
[self setValue:@(alpha) forKey:@"theKey"];
这将自动为您将浮点数转换为 NSNumber,而无需大惊小怪。
同样,
setValue:forKey:
确定指定键的适当访问器或实例变量所需的数据类型。如果数据类型不是对象,则使用适当的 -Value 方法从传递的对象中提取值。
您可以传递一个NSNumber
,它会自动转换回您的设置器的浮点数。
@interface MyClass ()
@property (nonatomic, assign) CGFloat example;
@end
@implementation MyClass
- (void)testSetter {
[self setValue:@(5.0f) forKey:@"example"];
}
@end