如何知道存储在 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
。
如何知道存储在 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
。