2016-04-29 7 views
0

Ich habe ein Array mit zwei Strings erstellt:Holen Sie sich das erste Zeichen aus den Werten des Arrays in Swift

var palabras: [String] = ["Gato", "Martillo"] 

Und ich das erste Zeichen dieser beiden String des Array zeigen wollen.

Ich habe versucht, mit:

letraLabel.text = palabras[round - 1].startIndex.advancedBy(0) 

Aber ich erhalte eine Fehlermeldung: Befehl aufgrund Signal fehlgeschlagen: Segmentation fault: 11 Ich weiß nicht, was es bedeutet ist.

Und ich habe auch versucht:

letraLabel.text = palabras[round - 1].startIndex 

Ich erhalte eine Fehlermeldung: ‚String‘ Wert kann nicht vom Typ zuweisen ‚Index‘ (auch bekannt als ‚String.CharacterView.Index‘) eingeben

Und schließlich habe ich versucht:

letraLabel.text = palabras[round - 1][palabras.startIndex] 

Aber auch bekam ich einen Fehler: ‚Index‘ ist nicht verfügbar: nicht Index String mit einem Int, für die Diskussion in der Dokumentation Kommentar siehe

Wie kann Ich bekomme das erste Zeichen der beiden Wörter des Arrays? Also, ist es notwendig, Foundation zu importieren, um das erste Zeichen eines Strings zu erhalten? Übrigens, wenn ich "import Foundation" schreibe, zeigt mir der Compiler Foundation eine durchgestrichene Linie.

+0

Über Ihre letzte Frage verwenden: http://stackoverflow.com/questions/36180575/xcode-7-3-import-module-displayed-with-strikethrough – Moritz

Antwort

1

Versuchen:

letraLabel.text = String(palabras[round - 1].characters.first!) 

Wenn Sie ein anderes Array mit nur den ersten Buchstaben erstellen möchten :

let palabras = ["Gato", "Martillo"] 
let firstLetters = palabras.map { String($0.characters.first!) } 
print(firstLetters) // ["G", "M"] 
0

Wie wäre:

for palabra in palabras { 
    let letra = palabra[palabra.startIndex] 
    // do something with letra here... 
} 

Oder, wenn Sie nicht durch alle palabra laufen wollen, so etwas wie dies funktionieren könnte:

let palabra = palabras[0] 
let letra = palabra[palabra.startIndex] 
// do something with letra here... 
0

Sie nah waren glaube ich. Geben Sie diesem einen Versuch

let charStr = palabras[round - 1] 
letraLabel.text = charStr.substringToIndex(charStr.startIndex.advancedBy(1)) 

oder wenn Sie alle wollen die ersten Zeichen miteinander verkettet:

letraLabel.text = palabras.map({ $0.substringToIndex($0.startIndex.advancedBy(1)) }).joinWithSeparator("") 
0

Sie können Mach das auch einfacher, es ist verschachtelt, aber mach die Arbeit fertig. Angenommen, Sie hatten eine Variable mit zwei Strings. Sie könnten einfach

someLabel.text = firstName.characters.first?.description + lastName.characters.first?.description 
Verwandte Themen