@@ -174,6 +174,11 @@ open class NumberFormatter : Formatter {
174
174
CFNumberFormatterSetProperty ( formatter, attributeName, value)
175
175
}
176
176
}
177
+
178
+ internal func _getFormatterAttribute( _ formatter: CFNumberFormatter , attributeName: CFString ) -> String ? {
179
+ return CFNumberFormatterCopyProperty ( formatter, attributeName) as? String
180
+ }
181
+
177
182
178
183
// Attributes of a NumberFormatter
179
184
internal var _numberStyle : Style = . none
@@ -320,7 +325,7 @@ open class NumberFormatter : Formatter {
320
325
internal var _decimalSeparator : String !
321
326
open var decimalSeparator : String ! {
322
327
get {
323
- return _decimalSeparator
328
+ return _decimalSeparator ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterDecimalSeparator )
324
329
}
325
330
set {
326
331
_reset ( )
@@ -342,7 +347,7 @@ open class NumberFormatter : Formatter {
342
347
internal var _currencyDecimalSeparator : String !
343
348
open var currencyDecimalSeparator : String ! {
344
349
get {
345
- return _currencyDecimalSeparator
350
+ return _currencyDecimalSeparator ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterCurrencyDecimalSeparator )
346
351
}
347
352
set {
348
353
_reset ( )
@@ -364,7 +369,7 @@ open class NumberFormatter : Formatter {
364
369
internal var _groupingSeparator : String !
365
370
open var groupingSeparator : String ! {
366
371
get {
367
- return _groupingSeparator
372
+ return _groupingSeparator ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterGroupingSeparator )
368
373
}
369
374
set {
370
375
_reset ( )
@@ -377,7 +382,7 @@ open class NumberFormatter : Formatter {
377
382
internal var _zeroSymbol : String ?
378
383
open var zeroSymbol : String ? {
379
384
get {
380
- return _zeroSymbol
385
+ return _zeroSymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterZeroSymbol )
381
386
}
382
387
set {
383
388
_reset ( )
@@ -421,7 +426,7 @@ open class NumberFormatter : Formatter {
421
426
internal var _notANumberSymbol : String !
422
427
open var notANumberSymbol : String ! {
423
428
get {
424
- return _notANumberSymbol
429
+ return _notANumberSymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterNaNSymbol )
425
430
}
426
431
set {
427
432
_reset ( )
@@ -489,7 +494,7 @@ open class NumberFormatter : Formatter {
489
494
internal var _positivePrefix : String !
490
495
open var positivePrefix : String ! {
491
496
get {
492
- return _positivePrefix
497
+ return _positivePrefix ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterPositivePrefix )
493
498
}
494
499
set {
495
500
_reset ( )
@@ -500,7 +505,7 @@ open class NumberFormatter : Formatter {
500
505
internal var _positiveSuffix : String !
501
506
open var positiveSuffix : String ! {
502
507
get {
503
- return _positiveSuffix
508
+ return _positiveSuffix ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterPositiveSuffix )
504
509
}
505
510
set {
506
511
_reset ( )
@@ -511,7 +516,7 @@ open class NumberFormatter : Formatter {
511
516
internal var _negativePrefix : String !
512
517
open var negativePrefix : String ! {
513
518
get {
514
- return _negativePrefix
519
+ return _negativePrefix ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterNegativePrefix )
515
520
}
516
521
set {
517
522
_reset ( )
@@ -522,7 +527,7 @@ open class NumberFormatter : Formatter {
522
527
internal var _negativeSuffix : String !
523
528
open var negativeSuffix : String ! {
524
529
get {
525
- return _negativeSuffix
530
+ return _negativeSuffix ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterNegativeSuffix )
526
531
}
527
532
set {
528
533
_reset ( )
@@ -533,7 +538,7 @@ open class NumberFormatter : Formatter {
533
538
internal var _currencyCode : String !
534
539
open var currencyCode : String ! {
535
540
get {
536
- return _currencyCode
541
+ return _currencyCode ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterCurrencyCode )
537
542
}
538
543
set {
539
544
_reset ( )
@@ -544,7 +549,7 @@ open class NumberFormatter : Formatter {
544
549
internal var _currencySymbol : String !
545
550
open var currencySymbol : String ! {
546
551
get {
547
- return _currencySymbol
552
+ return _currencySymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterCurrencySymbol )
548
553
}
549
554
set {
550
555
_reset ( )
@@ -555,7 +560,7 @@ open class NumberFormatter : Formatter {
555
560
internal var _internationalCurrencySymbol : String !
556
561
open var internationalCurrencySymbol : String ! {
557
562
get {
558
- return _internationalCurrencySymbol
563
+ return _internationalCurrencySymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterInternationalCurrencySymbol )
559
564
}
560
565
set {
561
566
_reset ( )
@@ -566,7 +571,7 @@ open class NumberFormatter : Formatter {
566
571
internal var _percentSymbol : String !
567
572
open var percentSymbol : String ! {
568
573
get {
569
- return _percentSymbol
574
+ return _percentSymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterPercentSymbol ) ?? " % "
570
575
}
571
576
set {
572
577
_reset ( )
@@ -577,7 +582,7 @@ open class NumberFormatter : Formatter {
577
582
internal var _perMillSymbol : String !
578
583
open var perMillSymbol : String ! {
579
584
get {
580
- return _perMillSymbol
585
+ return _perMillSymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterPerMillSymbol )
581
586
}
582
587
set {
583
588
_reset ( )
@@ -588,7 +593,7 @@ open class NumberFormatter : Formatter {
588
593
internal var _minusSign : String !
589
594
open var minusSign : String ! {
590
595
get {
591
- return _minusSign
596
+ return _minusSign ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterMinusSign )
592
597
}
593
598
set {
594
599
_reset ( )
@@ -599,7 +604,7 @@ open class NumberFormatter : Formatter {
599
604
internal var _plusSign : String !
600
605
open var plusSign : String ! {
601
606
get {
602
- return _plusSign
607
+ return _plusSign ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterPlusSign )
603
608
}
604
609
set {
605
610
_reset ( )
@@ -610,7 +615,7 @@ open class NumberFormatter : Formatter {
610
615
internal var _exponentSymbol : String !
611
616
open var exponentSymbol : String ! {
612
617
get {
613
- return _exponentSymbol
618
+ return _exponentSymbol ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterExponentSymbol )
614
619
}
615
620
set {
616
621
_reset ( )
@@ -667,7 +672,7 @@ open class NumberFormatter : Formatter {
667
672
internal var _paddingCharacter : String !
668
673
open var paddingCharacter : String ! {
669
674
get {
670
- return _paddingCharacter
675
+ return _paddingCharacter ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterPaddingCharacter )
671
676
}
672
677
set {
673
678
_reset ( )
@@ -782,7 +787,7 @@ open class NumberFormatter : Formatter {
782
787
internal var _currencyGroupingSeparator : String !
783
788
open var currencyGroupingSeparator : String ! {
784
789
get {
785
- return _currencyGroupingSeparator
790
+ return _currencyGroupingSeparator ?? _getFormatterAttribute ( _cfFormatter , attributeName : kCFNumberFormatterCurrencyGroupingSeparator )
786
791
}
787
792
set {
788
793
_reset ( )
@@ -889,6 +894,9 @@ open class NumberFormatter : Formatter {
889
894
internal var _format : String ?
890
895
open var format : String {
891
896
get {
897
+ if _format == nil {
898
+ _format = CFNumberFormatterGetFormat ( _cfFormatter) . _swiftObject
899
+ }
892
900
return _format ?? " # "
893
901
}
894
902
set {
0 commit comments