Ваш storageRef.downloadURL
является асинхронным вызовом, что означает, что потребуется время для выполнения блока завершения.Цикл for
будет выполнен, и вызовы count
* 2 будут обработаны.В зависимости от того, как быстро получен каждый ответ, вызывается соответствующее завершение, в результате которого вы получаете порядок.
func downloadImages(){
var count = images.count
let storage = Storage.storage().reference()
for x in 0...count-1{
var anime = [String]()
anime.append(images[x])
anime.append(images[x] + "1")
print("outside the second loop x is : \(x)")
print(x) // printing it here will give you the order as is
for i in anime {
let storageRef = storage.child("images/\(i).jpg")
storageRef.downloadURL { (url, error) in
if let error = error{
print(error.localizedDescription)
}
else{
print(x)
}
}
}
}
}
Поскольку вы не можете контролировать порядок выполнения блока завершения.Словарь будет одним из решений вашей проблемы.Сохраните index как key и url array как значение .Или у вас может быть struct , в которой хранятся URL-адреса для соответствующего индекса, и sort it.