Pro*_*ber 6 objective-c foundation
原因是我必须回到房产中的确切价值.所以如果它是一个浮点数,我想调用-floatValue.但如果它是一个int,我想调用-intValue.
NSNumber是否记得它是如何初始化的?
Tom*_*mmy 16
NSNumber与CFNumber进行免费桥接(参见CFNumber参考文献顶部的文本).所以你可以使用CFNumberGetType.例如
- (void)logTypeOf:(NSNumber *)number
{
switch(CFNumberGetType((CFNumberRef)number))
{
case kCFNumberSInt8Type: NSLog(@"8bit signed integer"); break;
case kCFNumberSInt16Type: NSLog(@"16bit signed integer"); break;
case kCFNumberSInt32Type: NSLog(@"32bit signed integer"); break;
/* ... etc, for all of:
kCFNumberSInt64Type
kCFNumberFloat32Type
kCFNumberFloat64Type
kCFNumberCharType
kCFNumberShortType
kCFNumberIntType
kCFNumberLongType
kCFNumberLongLongType
kCFNumberFloatType
kCFNumberDoubleType
kCFNumberCFIndexType
kCFNumberNSIntegerType
kCFNumberCGFloatType
*/
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:更仔细地查看文档,CFNumberIsFloatType似乎完全符合您的要求而没有复杂性.所以:
if(CFNumberIsFloatType((CFNumberRef)number))
{
NSLog(@"this was a float");
}
else
{
NSLog(@"this was an int");
}
Run Code Online (Sandbox Code Playgroud)