Skip to content

Commit a17cdd0

Browse files
authored
Merge pull request #1408 from millenomi/ud-persistent-domains
2 parents f766437 + 1bac2b3 commit a17cdd0

File tree

3 files changed

+411
-168
lines changed

3 files changed

+411
-168
lines changed

Foundation/NSNumber.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,34 @@ open class NSNumber : NSValue {
622622
fatalError("unsupported CFNumberType: '\(numberType)'")
623623
}
624624
}
625+
626+
internal var _swiftValueOfOptimalType: Any {
627+
if self === kCFBooleanTrue {
628+
return true
629+
} else if self === kCFBooleanFalse {
630+
return false
631+
}
632+
633+
let numberType = _CFNumberGetType2(_cfObject)
634+
switch numberType {
635+
case kCFNumberSInt8Type:
636+
return Int(int8Value)
637+
case kCFNumberSInt16Type:
638+
return Int(int16Value)
639+
case kCFNumberSInt32Type:
640+
return Int(int32Value)
641+
case kCFNumberSInt64Type:
642+
return int64Value < Int.max ? Int(int64Value) : int64Value
643+
case kCFNumberFloat32Type:
644+
return floatValue
645+
case kCFNumberFloat64Type:
646+
return doubleValue
647+
case kCFNumberSInt128Type:
648+
return int128Value
649+
default:
650+
fatalError("unsupported CFNumberType: '\(numberType)'")
651+
}
652+
}
625653

626654
deinit {
627655
_CFDeinit(self)

0 commit comments

Comments
 (0)