如何在Objective-C中将NSObject
类型的对象转换为NSNumber
?
在Android中我这样做:
if(value instanceof Integer){
intValue = (Integer)value;
}
但我如何在Objective-C中转换价值?
我的代码:
-(void)changeWithValue:(NSObject*)value{
if([value isKindOfClass:[NSNumber class]])
float floatValue = [value floatValue];
}
但它不起作用:(
请帮帮我。感谢
答案 0 :(得分:3)
在澄清您的错误后,Objective-C-ese解决方案是使用id
作为参数类型。类型id
表示“任何对象类型”,编译器允许您调用任何方法。所以你会得到以下代码:
- (void)changeWithValue:(id)value
{
if([value isKindOfClass:[NSNumber class]])
{
float floatValue = [value floatValue];
...
}
else
{
// handle not an `NSNumber`
}
}
通过使用respondsToSelector:
,您可以更方便地测试方法而不是类型:
- (void)changeWithValue:(id)value
{
if([value respondsToSelector:@selector(floatValue)])
{
float floatValue = [value floatValue];
...
}
else
{
// handle case where value does not support floatValue
}
}
HTH
答案 1 :(得分:1)
你试试这个吗?
-(void)changeWithValue:(NSObject*)value{
if([value isKindOfClass:[NSNumber class]])
NSNumber *num = (NSNumber*)value;
float floatValue = [num floatValue];
}