Posts

Post not yet marked as solved
0 Replies
1.3k Views
I am using PhotoKit to access Photos in iCloud. For photos who's source is .typeCloudShared, there is no PHAssetResource associated with a PHAsset retrieved from PHFetchResults. This is only true for images/live photos, for videos there are resources available. Snippet below.func doPhotos(photos: PHFetchResult) -> Void { photos.enumerateObjects({ (asset, idx, _) in let resources = PHAssetResource.assetResources(for: asset) for resource in resources { // This is never called when asset.sourceType == .typeCloudShared // and asset.mediaType == .image } }) } func fectchAssets() -> Void { var fetchOptions: PHFetchOptions! fetchOptions.includeAssetSourceTypes = [.typeUserLibrary, .typeCloudShared, .typeiTunesSynced ] let sharedCollection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumCloudShared, options: nil) sharedCollection.enumerateObjects( {(collection, idx, stop) in let sharedPhotos: PHFetchResult = PHAsset.fetchAssets(in: collection, options: fetchOptions) doPhotos(photos: sharedPhotos) }) }For other source types, I am able to receive resources. I am able to retreive image data via PHImageManager like below:func doPhotos(photos: PHFetchResult) -> Void { photos.enumerateObjects({ (asset, idx, _) in let ops = PHImageRequestOptions() ops.isNetworkAccessAllowed = true ops.isSynchronous = true PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .default, options: ops, resultHandler: {(image, info) -> Void in // This works, image info is valud })I am wondering if this behavior is intended. Thedocumentation notes:"Assets from shared albums cannot be edited and do not appear in Moments collections."I would prefer to work with PHAssetResource as this contains more information and allows for retrieval of original image data (including file format, etc.)Any insight woudl be appreciated.
Posted
by arretevad.
Last updated
.