Früher funktionierte dies in Xcode 6 Beta 5, jetzt bekomme ich Kompilierungsfehler in Beta 6
for aCharacter : Character in aString {
var str:String = ""
var newStr:String = str.append(aCharacter) // ERROR
....
}
Fehler : append
kann nicht mit einem Argumenttyp Character
aufgerufen werden
Update für das sich bewegende Ziel, das schnell ist:
Swift hat keinen Operator + mehr, der einen String und ein Array von Zeichen aufnehmen kann. (Es gibt eine String-Methode appendContentsOf()
, die zu diesem Zweck verwendet werden kann).
Die beste Möglichkeit, dies jetzt zu tun, ist die Antwort von Martin R in einem Kommentar:
var newStr:String = str + String(aCharacter)
Ursprüngliche Antwort: Dies wurde in Beta 6 geändert. Überprüfen Sie die Versionshinweise. Ich lade es immer noch herunter, aber versuchen Sie es mit:
var newStr:String = str + [aCharacter]
Das funktioniert auch
var newStr:String = str + String(aCharacter)
fügen Sie append(c: Character)
IS die richtige Methode hinzu, Ihr Code weist jedoch zwei weitere Probleme auf.
Die erste besteht darin, dass Sie auf die String.characters
-Eigenschaft zugreifen müssen, um die Zeichen einer Zeichenfolge zu durchlaufen.
Die zweite ist, dass die Append-Methode nichts zurückgibt, also sollten Sie den newStr entfernen.
Der Code sieht dann so aus:
for aCharacter : Character in aString.characters {
var str:String = ""
str.append(aCharacter)
// ... do other stuff
}
Eine weitere mögliche Option ist
var s: String = ""
var c: Character = "c"
s += "\(c)"
var stringName: String = "samontro"
var characterNameLast: Character = "n"
stringName += String(characterNameLast) // You get your name "samontron"
Gemäß Swift 4 Documentation , Sie können einen Zeichenwert an eine String-Variable mit der Methode append () des String-Typs anhängen:
var welcome = "hello there"
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome now equals "hello there!"
Ich musste Initialen von Vor- und Nachnamen bekommen und sie zusammenfügen. Mit Hilfe von Teilen der obigen Antworten funktionierte dies für mich:
var initial: String = ""
if !givenName.isEmpty {
let char = (givenName as NSString).substring(with: NSMakeRange(0, 1))
let str = String(char)
initial.append(str)
}
if !familyName.isEmpty {
let char = (familyName as NSString).substring(with: NSMakeRange(0, 1))
let str = String(char)
initial.append(str)
}
let original:String = "Hello"
var firstCha = original[original.startIndex...original.startIndex]
var str = "123456789"
let x = (str as NSString).substringWithRange(NSMakeRange(0, 4))
var appendString1 = "\(firstCha)\(x)" as String!
// final name
var namestr = "yogesh"
var appendString2 = "\(namestr) (\(appendString1))" as String!*