Atualizar para o Swift 3 mais recente (ainda funciona no Swift 4)
Você pode usar o reversed()método em um intervalo
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Ou 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:) é semelhante, mas exclui o último valor
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Atualização para o último Swift 2
Em primeiro lugar, as extensões de protocolo mudam a forma como reverseé usado:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride foi retrabalhado no Xcode 7 Beta 6. O novo uso é:
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
Também funciona para Doubles:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Tenha cuidado com as comparações de ponto flutuante aqui para os limites.
Edição anterior para Swift 1.2 : a partir do Xcode 6 Beta 4, por e ReverseRange não existem mais: [
Se você está apenas procurando inverter um intervalo, a função reversa é tudo que você precisa:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Conforme postado por 0x7fffffff, há uma nova construção de passo que pode ser usada para iterar e incrementar por inteiros arbitrários. A Apple também afirmou que o suporte de ponto flutuante está chegando.
Proveniente de sua resposta:
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
}