RemoveAtIndex Absturz von schnellem Array
Ich habe ein Array von Buchstaben und möchte die Zeichen mit den Buchstaben abgleichen. Dann mache ich etwas mit dem Buchstaben (in diesem Fall wird er gelb) und entferne das übereinstimmende Zeichen aus dem Zeichen-Array.
Wenn ich ein @ haword1
wie "Rekrutierung" undspecialLetters
wie "ment" dasremoveAtIndex
funktioniert einwandfrei, aber im folgenden Beispiel, das 2 s in [ness] enthält, stürzt Folgendes ab:
schwerwiegender Fehler: Array-Index außerhalb des Bereichs
Lesen Sie andere Beiträge hier, und schlagen Sie vor, dass es gefährlich ist, Elemente aus einem Array zu entfernen, wenn sie verwendet werden. Aber wie kommt es, dass einige Wörter und andere nicht in Ordnung sind? Ich dachte, die Aufzählung des Arrays würde jedem Buchstaben nur einen Index geben? Und irgendeinen Vorschlag, wie man das Problem behebt, damit es für alle Arten von Zeichen funktioniert?
var letters = Array(word1) // [r,a,n,d,o,m,n,e,s,s]
var characters = Array(specialLetters) // [n,e,s,s]
// delete the special letters
for (index, element) in enumerate(characters) {
if letter == element {
tile.letterLabel.textColor = UIColor.yellowColor()
// remove that character from the array so can't be matched twice
characters.removeAtIndex(index)
}
}