У меня возникла проблема при запросе PHAsset/PHImageManager
Изначально я извлекаю ресурсы изображений через PHAsset.fetchAssets, добавляю их в массив UIImage
и загружаю их в collectionView
.Это работает без проблем.Размер изображения запроса достаточно мал, чтобы не вызывать задержек при загрузке.
Далее, когда я выбираю ячейку collectionView
в функции делегата didSelectItemAt
, я пытаюсь повторно запросить PHAsset
с большим размером (качеством) изображения и добавить изображения большего размера.в другой массив UIImage
.
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
/* Store the selected image into a variable */
let selectedImage = images[indexPath.item]
/* Request a larger quality image */
if let index = self.images.index(of: selectedImage) {
let selectedAsset = self.assets[index]
let imageManager = PHImageManager.default()
let targetSize = CGSize(width: 600, height: 600)
imageManager.requestImage(for: selectedAsset, targetSize: targetSize, contentMode: .default, options: nil) { (image, info) in
if let image = image {
self.selectedImages.append(image)
}
}
}
print(selectedImages.count)
}
Две проблемы, с которыми я сталкиваюсь:
1) при печати счетчика массива я получаю нечетные числа (1, 3, 5, 7 и т. Д.) Вместо добавочногосчитать (1,2,3,4 и т. д.).Не знаете, почему это происходит?Причиняет ненормальное увеличение моего массива selectedImages.
2) Эта ошибка возникает при выборе 2-й ячейки (индекс 1) в collectionView:
2019-02-12 21:12: 40.029686-0800 ModularX [15837: 4640133] [ImageManager] FigPhotoDecompressionContainerDecodeImageForIndexAsync - [PLFigPreheatItem startPreheatRequestWithCompletionHandler:] _ block_invoke_2, возвращенная -16074/122: 02: 09/04/06/02/02/02/02/02/02/02/02/02/02/02/2/20/20/20/20-0800 ModularX [15837: 4640145] [ImageManager] PFFigCreateCGImageFromImageData UIImage * PLCreateImageFromDataWithFormat (NSData *, BOOL, PLPhotoImageFormatID, NSString *, BOOL, CFDictionaryRef *, -124 * * 10 * * 10 *
1023 *1023* 1023 *1023*) *2323*)не так?
Спасибо