Я новичок в Firebase и пытался загрузить все изображения из папки, пытаясь сохранить их в порядке в массиве URL.
Я использовал функцию listAll
, чтобы получить массив ссылок со всеми изображениями, а затем просмотреть их, загрузить URL-адрес и вставить его в массив itemImagesURL
. Когда мы перебрали все изображения, массив возвращается с помощью completionHandler
.
. Основная проблема состоит в том, что массив заполняется изображениями в неправильном порядке, поскольку каждый элемент неТо же самое нужно для загрузки URL-адреса (и добавления его в массив).
Есть ли способ загрузить URL-адрес каждого элемента, сохраняя исходный порядок ссылочного массива result.items
?
Мой код выглядит следующим образом:
func getItemImages(completionHandler: @escaping ([URL?]) -> Void) {
var itemImagesURL: [URL] = []
// We retrieve all images using listAll
downloadRef.listAll(completion: { result, error in
if let error = error {
print("Error listing item images: ", error.localizedDescription)
return
}
itemImagesURL.reserveCapacity(result.items.count)
// We download every image's url
for index in 0 ..< result.items.count {
result.items[index].downloadURL(completion: { url, error in
if let error = error {
//Handle any errors
print("Error downloading item image: ", error.localizedDescription)
return
} else {
// Get download URL
itemImagesURL.insert(url!, at: index)
// All the urls of the item's images are retrieved -> we escape
if itemImagesURL.count == result.items.count {
print("Item's Images download finished.")
completionHandler(itemImagesURL)
}
}
})
}
}) // list all
}
}