NSNumber is a free bridge with CFNumber (see, among other sources, the text at the top of CFNumber Link ). This way you can use CFNumberGetType . For instance.
- (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; } }
EDIT: Having examined the documentation in more detail, CFNumberIsFloatType seems to do exactly what you want, without complexity. So:
if(CFNumberIsFloatType((CFNumberRef)number)) { NSLog(@"this was a float"); } else { NSLog(@"this was an int"); }
Tommy source share