将NSObject转换为NSNumber

时间:2016-07-28 14:06:06

标签: ios objective-c

如何在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];
 }

但它不起作用:(

请帮帮我。感谢

2 个答案:

答案 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];
 }