Мой вопрос: какой лучший способ узнать, когда загружено последнее изображение, поскольку после того, как все файлы были загружены, мне нужно обновить интерфейс.Загрузка нескольких файлов в фоновом режиме с использованием Parse
Я загружаю массив PFFiles из Parse. То, что я делаю момент является: получение массива PFFiles от синтаксического анализа таким образом
func getAllUserPictures(completion: (imageFiles: [PFFile]) -> Void) {
guard let id = currentUserID else {
return
}
let query = PFQuery(className: "Profile")
query.whereKey("objectId", equalTo: id)
query.includeKey("avatars")
query.findObjectsInBackgroundWithBlock { profile, error in
guard let imageFiles = profile?.first?.objectForKey("avatars") as? [PFFile] else {
return
}
completion(imageFiles: imageFiles)
}
}
После получения массива ImageFile из обработчика завершения я правильно загрузить их таким образом:
func getUserPicturesWithBlock(completion: (result: [UIImage]) -> Void) {
DataManager.sharedInstance.getAllUserPictures { imageFiles in
for file in imageFiles {
file.getDataInBackgroundWithBlock({ data, error in
guard let data = data, let image = UIImage (data: data) else{
return
}
self.imagesArray.append(image)
})
}
}
}
Я использовал первый метод, который вы предлагаете в другом случае, когда у меня был UIImageView в ячейках, и они wold обрабатывали сами, но в этом случае у меня есть UIScrollView, где я добавляю все изображения после их загрузки. Уже используя второй метод, который вы предложили, но я обеспокоен тем, что по какой-то причине может произойти сбой одной из загрузок, а количество изображений и файлов PFF не будет равным, не позволяя обновлять пользовательский интерфейс. – Bashta
Почему бы не обновить пользовательский интерфейс после каждой загрузки? Обновление пользовательского интерфейса - очень эффективная и быстрая задача: – Russell
Поскольку мне нужно установить изображения в режиме прокрутки только один раз, чтобы предотвратить «белые страницы» во время прокрутки пользователя. Я бы предпочел, чтобы пользователь подождал, пока вся загрузка будет выполнена, а затем покажет не полный вид в этом случае. Загрузка выполняется через пару секунд, проблема в том, что мне нужно что-то вроде обработчика завершения, который будет уведомлять, когда были загружены все изображения, включая случаи, когда произошла ошибка загрузки. – Bashta