2017-12-06 5 views
0

Ich versuche NSString(format: , arg...) zu verwenden, um ein UILabel zu aktualisieren, indem Sie einen oder mehrere Werte in diesem Label inkrementieren.Convert [Float] in Variablenargumente

Um dies zu tun, habe ich eine Funktion, wo ich die Argumente als Float... empfange (was ich will) und die einzige Lösung, die ich gefunden habe, sie zu speichern ist mit einem Array [Float] (was ist nicht was ich will) . Dann ändere ich jeden Wert meines Arrays, um es anzuzeigen.

Um den Text meines UILabel zu ändern, verwende ich label.text = NSString(format: "%f and %f", myArrayOfFloat) und es funktioniert nicht. NSString verwendet das Array als einzelnen Wert und nicht als Array.

Wenn jemand eine Lösung hat, bin ich ganz Ohr.

Antwort

1

Es gibt eine

NSString(format: String, arguments argList: CVaListPointer) 

Initialisierer die die Substitutionswerte als CVaListPointer nimmt (was der Swift-Äquivalent von va_list in C ist). Beispiel:

let myArrayOfFloat: [Float] = [1.2, 3.4] 
let text = withVaList(myArrayOfFloat) { 
    NSString(format: "%f and %f", arguments: $0) 
} 
print(text) // 1.200000 and 3.400000 

Jedoch ist es einfacher, eine String zu schaffen, die

String(format: String, arguments: [CVarArg]) 

Initialisierer verwenden, die die Substitutionswerte als einzelne Array-Parameter erfolgt. Beispiel:

let myArrayOfFloat: [Float] = [1.2, 3.4] 
let text = String(format: "%f and %f", arguments: myArrayOfFloat) 
print(text) // 1.200000 and 3.400000 
+0

Yeeesssss, genau das habe ich gesucht! Vielen Dank ;) –