Die Schleife dekrementiert den Schleifenzähler, wenn sie ein Element findet, das nicht vorhanden sein sollte, und entfernt es.So schreiben Sie eine Swift 3-Schleife ohne einen änderbaren Zähler
var iMax = numListViews
for var i = 0; i < numListViews; i += 1 {
if (columnsSortTypesArray[i] == "") {
columnsSortTypesArray.removeAtIndex(i)
i--
iMax--
} else {
listViews[i].sortList(columnsSortTypesArray[i])
}
}
Was ist 'listViews'? Und 'columnsSortTypesArray', ist es ein' String' Array? Was ist die '.sortList' Methode, die auf' i' angewendet wird: Die Übertragung von 'listView'? Bitte werfen Sie einen Blick auf [So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) und aktualisieren Sie möglicherweise Ihre Fragen mit relevanteren (jedoch nicht aufgeblähten) Informationen. – dfri
Ihr ursprünglicher Code ist bereits ein wenig verschleiert. Schau dir die 'filter()' Methode an! –
Auch ein Kommentar zum obigen Code: Was ist, wenn 'columnsSortTypesArray' eine Länge (num. Elements) hat, die nur geringfügig größer als' numListViews' ist, aber mehrere '" "Einträge enthält? Dies könnte zu einer Laufzeitausnahme beim 'columnsSortTypesArray [i]' (versuchten) Elementzugriff führen, da 'i' nach mehreren nachfolgenden Elemententfernungen von 'columnsSortTypesArray' zunimmt (nach der die Länge von 'columnsSortTypesArray' möglicherweise '
dfri