У меня есть collectionView
, который отображает фотографии из Фотогалереи через PHAsset
init PHAsset
fileprivate var fetchResult: PHFetchResult<PHAsset>!
fileprivate let imageManager = PHCachingImageManager()
fileprivate var fetchOptions: PHFetchOptions?
func viewDidLoad() {
fetchOptions = PHFetchOptions()
fetchOptions!.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)
imageManager.allowsCachingHighQualityImages = true
view?.refreshView()
}
и настраиваю ячейку:
func configure(cell: PhotoCollectionViewCell, forRow row: Int) {
let asset = fetchResult.object(at: row)
let requestOptions = PHImageRequestOptions()
requestOptions.isNetworkAccessAllowed = true
requestOptions.deliveryMode = .highQualityFormat // Quality of images
imageManager.requestImage(for: asset, targetSize: CGSize(width: 400, height: 400), contentMode: .default, options: requestOptions, resultHandler: { image, info in
cell.photoImage.image = image
})
}
Я пытаюсь получить фотографию, когда выбираю строку коллекции
func didSelect(row: Int) {
fetchResult.object(at: row)
.requestContentEditingInput(with: PHContentEditingInputRequestOptions()) { [weak self] (editingInput, info) in
let input = editingInput
//some code for image cropping
}
}
и иногда получаю editingInput = nil
. Я понял, что это происходит, когда оригинальная фотография хранится в iCloud.
Как я могу получить локальную копию оригинальной фотографии из iCloud или ссылку для загрузки этой фотографии?