如何知道存储在NSNumber上的号码类型?

时间:2015-06-19 07:17:26

标签: ios nsnumber

如何知道号码的类型存储在NSNumber对象上?换句话说,有没有办法在创建NSNumber时检查数字的条目类型?

我们假设我在NSNumber对象上存储了一些随机数:

NSNumber *intNumber = [NSNumber numberWithInt:1];

我当然希望稍后使用intValue方法检索它:

int theValue = [intNumber intValue];

但是,如果数字来自未知来源,API JSON响应或其他什么,我只是将其解析为NSDictionary,结果是这样的:

{
    "Some key" : 1,
    "Some other key" : 74.1234
}

我们可以假设Some key的值为int,而Some other key的值为double

有没有办法检查哪种类型适用于解析每个键的值?我可以使用的东西:

for (NSNumber *number in _arrayOfNumbers) {

    if (/*number is integer*/) {

        //do integer stuff

    } else if (/*number is double*/) {

        //do double stuff
    }
}

我不知道我是否需要在真实情况下使用它,但我只是想知道是否有办法检查数字的“输入类型”。

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用CFNumberGetType

CFNumberGetType((CFNumberRef)number);

您可以将此值转换为枚举CFNumberType的每个值的switch语句。