2016-09-12 36 views
8

Xcode 8,0 (8A218a) GM
docelowa iOS 10 (Swift i 3)Swift 3 i NumberFormatter (.currency) == ¤?

Rozważmy następujący kod:

let number = NSDecimalNumber(decimal: 22.4) 

let numberFormatter = NumberFormatter() 
numberFormatter.numberStyle = .currency 
numberFormatter.locale = Locale.current 

let result = numberFormatter.string(from: number) 
print(result!) 

Wynikiem jest:

¤22.40 

(Nie mam pojęcia, co oznacza ¤.)

Ale jeśli zainicjować ustawienia regionalne, takie jak:

numberFormatter.locale = Locale(identifier: "en_US") 

Rezultatem będzie:

$22.40 

... co jest to, czego się spodziewać w pierwszej kolejności.

Zauważ, że to działa w Tho Playground:

enter image description here

Problem wydaje się zdarzyć tylko w urządzeniach/symulatorów pośrednictwem Xcode wodowania.
(Testowałem na dwóch różnych komputerach MacOS - w moim miejscu pracy iw domu.)

Jakieś pomysły na to, co się dzieje?

+0

Jaki jest Twój obecny narodowe? – JustSid

+0

Co daje "Locale.current"? – rmaddy

+0

(lldb) po Locale.current ▿ pl (bieżący) - identyfikator: "en" - rodzaj: "aktualny" –

Odpowiedz

1

Odpowiadając na moje własne pytanie: odtworzyć projekt. : \

Projekt został uruchomiony w Xcode 7 + Swift 2, a następnie "migrowany" do Xcode 8 + Swift 3 (ręcznie). Coś musiało pójść nie tak. Nie wiem co (i nie chcę wiedzieć).

To nie był duży projekt, więc spędziłem 40 minut na przenoszeniu plików. Gdyby to był duży projekt, byłbym już ...

Xcode pls.

12

Mam te same problemy i rozwiązuję je przez poniższy kod. Nadzieję, że to przydatne

func formatCurrency(value: Double) -> String { 
    let formatter = NumberFormatter() 
    formatter.numberStyle = .currency 
    formatter.maximumFractionDigits = 2 
    formatter.locale = Locale(identifier: Locale.current.identifier) 
    let result = formatter.string(from: value as NSNumber) 
    return result! 
} 
+0

literówka, formatCurrency zamiast formatuCurre * ny * – yeyo

1

to się ze mną dzieje w symulatorze, okazuje się, że był błąd w mojej konfiguracji systemu. Kasy następujące kroki:

  1. kliknij Set aktywny schemat (kliknij bezpośrednio na lewo od rodzaju symulatora czyli iPhone 7 Plus etc.)
  2. Click Edycja schematu ...
  3. Kliknij na Run ustawienia na lewej
  4. Ustaw Application Region do pożądanego regionu
  5. Ustaw Zastosowanie Język do żądanego języka
  6. Spróbuj ponownie uruchomić aplikację, należy już mieć wyświetla symbol "¤", a zamiast tego powinien odzwierciedlać prawidłowy symbol waluty.
0

myślę język urządzenie ustawione na chiński dlatego ¤ symbol pokazany jako symbol waluty

+0

Tak nie jest. Urządzenie zostało/zostało ustawione na en-US. –