Verketten von String in Swift
ich habe ein array welches strings enthält, ich.e Array
habe ich versucht zu verketten von string, aber ich bekam eine Fehlermeldung wie "Zeichenfolge ist nicht identisch mit dem UInt8"
var titleString:String! = ""
for title in array {
titleString += "\(title)"
}
- Warum hast du das string optional?
- Durch Fehler. Ich bearbeitet meine Frage
- Es hat nicht funktioniert, weil Sie erklärte, die
titleAnswer
als implizit unwrapped optional. Nun, Sie haben sich in eine nicht optional, es sollte funktionieren - siehe meine Antwort weiter unten (es gibt auch einen besseren Weg, um zu verketten) - Funktioniert dein code (nach dem edit) auch tatsächlich zu produzieren, dass die Fehlermeldung? Ansonsten ist deine Frage unklar.
- Du hast Recht.ich bin immer leere Zeichenfolge nach concatenate-operation.
- Ich habe Rollback-Ihre Frage an die erste version, denn nachdem Ihr den code Bearbeiten und die Fehler Meldung nicht mehr (und die akzeptierte Antwort bezieht sich auch auf den code vor dem edit). Bitte beachten Sie, dass die SO ist auch eine Referenz für zukünftige Leser, und Sie wäre völlig verwirrt sonst. – Wenn Sie haben ein neues problem, dann eine neue Frage stellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verkettet alle Elemente eines string-array verwenden, können Sie die
reduce
Methode:Der erste parameter ist der erste string ist leer, und die zweite ist eine closure, die ausgeführt wird, für jedes element im array. Die closure erhält 2 Parameter: der Wert zurückgegeben, die Sie im vorhergehenden Schritt (oder den ersten Wert, wenn es das 1. element), und der aktuelle Wert des Elements.
Mehr info hier
Nachtrag vergaß ich explizit eine Antwort auf Ihre Frage: die Verkettung funktioniert nicht, da Sie erklärte, die
titleString
als optional - drehen Sie einfach in eine nicht optionale variable und es wird funktionieren. Wenn Sie immer noch wollen, verwenden Sie die optionalen, dann nutzen Sie erzwungene unwrapping, wenn dabei die Zuordnung:Nachtrag 2 Wie vorgeschlagen von @MartinR, es gibt eine andere einfachere Art und Weise zu verketten:
reduce()
ist schick, aber eine einfachejoin("", array)
würde so gut tun ...let res = string.reduce("", +)
In Swift 3, dies ist, wie Sie verbinden Elemente eines String-array:
Obwohl
joined(separator:)
ist wirklich darauf ausgerichtet die Tat umzusetzen Trennzeichen zwischen den strings. Reduzieren Sie wird noch präziser: