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)
    }
}

Antworten auf die Frage(10)

Ihre Antwort auf die Frage