2016-04-02 11 views
0

Ich möchte die Ausgabe von biweekPay im Währungsformat anzeigen. Es wird jedoch ein Fehler angezeigt, der besagt, dass der Wert vom Typ String nicht in das erwartete Argument konvertiert werden kann Geben Sie NSNnumber ein. Ich nahm an, dass die ZeilennummerFormatter.stringFromNumber die Konvertierung zuließ, aber nicht. Was ist der beste Weg, damit umzugehen?Wert des Typs 'String' kann nicht in den erwarteten Argumenttyp 'NSNumber' konvertiert werden

let biweekPay = weekPay * 2 
    let numberFormatter = NSNumberFormatter() 
    numberFormatter.numberStyle = NSNumberFormatterStyle.CurrencyAccountingStyle 
    numberFormatter.stringFromNumber(biweekPayLabel.text)! 
    biweekPayLabel.text = "(biweekPay)" 
+2

'stringFromNumber' bedeuten vermuten gibt eine 'NSNumber' zurück, die Sie momentan nicht verwenden, aber müssen;) – HAS

+0

@HAS' stringFromNumber' gibt tatsächlich 'String' zurück ;-) – vadian

+0

Ich wollte gerade das schreiben! Danke, natürlich! – HAS

Antwort

2

Die Fehlermeldung besagt, dass das Argument von stringFromNumber - wie der Name schon sagt - muss eine NSNumber Instanz sein und nicht als Text (String)

ich Sie

let biweekPay = weekPay * 2 
let numberFormatter = NSNumberFormatter() 
numberFormatter.numberStyle = .CurrencyAccountingStyle 
let biweekPayString = numberFormatter.stringFromNumber(biweekPay) 
biweekPayLabel.text = biweekPayString ?? "n/a" 
+0

Danke, das hat das Problem gelöst. Meine einzige Frage ist, können Sie bitte die Zeile biweekPayLabel.text = biweekPayString ?? "n/a"? – KelCodesStuff

+0

'stringFromNumber' gibt einen optionalen Wert zurück. Es ist nur eine Vorsichtsmaßnahme, 'n/a 'zurückzugeben, falls' stringFromNumber' 'nil' zurückgibt. Aber wenn die Zahl garantiert in String umwandelbar ist, können Sie das optionale entpacken. – vadian