Actualización para el último Swift 3 (todavía funciona en Swift 4)
Puedes usar el reversed()
método en un rango
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
O stride(from:through:by:)
método
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
es similar pero excluye el último valor
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Actualización para el último Swift 2
En primer lugar, las extensiones de protocolo cambian cómo reverse
se usa:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride ha sido reelaborado en Xcode 7 Beta 6. El nuevo uso es:
for i in 0.stride(to: -8, by: -2) { print(i) } // 0 -2 -4 -6
for i in 0.stride(through: -8, by: -2) { print(i) } // 0 -2 -4 -6 -8
También funciona para Doubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Tenga cuidado con las comparaciones de punto flotante aquí para los límites.
Edición anterior para Swift 1.2 : A partir de Xcode 6 Beta 4, by y ReverseRange ya no existen: [
Si solo está buscando invertir un rango, la función inversa es todo lo que necesita:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Según lo publicado por 0x7fffffff, hay una nueva construcción de zancada que se puede usar para iterar e incrementar en números enteros arbitrarios. Apple también declaró que llegará el soporte de punto flotante.
Procedente de su respuesta:
for x in stride(from: 0, through: -8, by: -2) {
println(x) // 0, -2, -4, -6, -8
}
for x in stride(from: 6, to: -2, by: -4) {
println(x) // 6, 2
}