The best I can come up with is something like this:
fun NSNumber.toNumber(): Number {
return when (CFNumberGetType(this as CFNumberRef)) {
kCFNumberSInt8Type, kCFNumberSInt16Type, kCFNumberSInt32Type, kCFNumberSInt64Type,
kCFNumberIntType, kCFNumberCFIndexType, kCFNumberNSIntegerType -> integerValue
kCFNumberFloat32Type, kCFNumberFloat64Type, kCFNumberFloatType, kCFNumberCGFloatType -> floatValue
kCFNumberCharType -> charValue
kCFNumberShortType -> shortValue
kCFNumberLongType, kCFNumberLongLongType -> longLongValue
kCFNumberDoubleType -> doubleValue
else -> longLongValue
}
}
But it doesn’t like casting
NSNumber
to
CFNumberRef
. Says “this cast can never succeed”. Are toll-free bridged type casts supported?