如何知道存储在 NSNumber 上的数字类型?

How to know the type of number stored on 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
    }
}

我不知道我是否需要在真实情况下使用它,但我只是想知道是否有办法检查号码的 "entry type"。

提前致谢。

使用CFNumberGetType

CFNumberGetType((CFNumberRef)number);

您可以将此值放入枚举的每个值的 switch 语句中 CFNumberType