Я пытаюсь загрузить некоторые изображения, сохраненные локально (используя Диск ), в UICollectionView .Всякий раз, когда я пытаюсь их получить, приложение зависает примерно на 10 секунд.Это говорит мне, что я делаю что-то очень неправильное.
Я думаю о том, чтобы загрузить их асинхронно и всякий раз, когда один из них загружается, отображать это первым.Однако у меня они есть в локальном хранилище, так почему их загрузка занимает так много времени?
Изображения импортируются с iPhone пользователя и не сжимаются.При загрузке я загружаю все изображение (я знаю, что это плохо).
Может ли кто-нибудь указать мне правильное направление?
Вот первая часть процесса загрузки:
func fetchImage(path: String, imageID: String, completionHandler: @escaping (() throws -> UIImage) -> Void) {
do {
let imagePath = path + imageID + ".png"
let image = try Disk.retrieve(imagePath, from: .documents, as: UIImage.self)
completionHandler{ return image }
} catch {
completionHandler{ throw AlbumStoreError.CannotFetch("Cannot fetch Image with Error: \(error)") }
}
}
здесь Вторая часть
func fetchImages(path: String, completionHandler: @escaping ([UIImage]) -> Void) {
albumsStore.fetchImages(path: path) { (images: () throws -> [UIImage]) in
do{
let images = try images()
DispatchQueue.main.async {
completionHandler(images)
}
} catch {
DispatchQueue.main.async {
completionHandler([])
}
}
}
}
вот как это представлено.В основном он возвращает весь массив и перезагружает представление коллекции
func presentImages(response: Collage.Images.Save.Response){
let images = response.images
let viewModel = Collage.Images.ViewModel(images: images)
viewController?.displayImages(viewModel: viewModel) }