#ios #swift #photo #phasset #phassetcollection
#iOS #swift #фото #phasset #phassetcollection
Вопрос:
Я работаю с Photo Framework и пытаюсь получить все фотографии и видео во всех альбомах на iPhone. Но проблема в том, что я не могу получить все альбомы, включая «Фотопленку», «Видео», «Избранное», «Селфи», «Скриншоты» и другие альбомы с fetchAssetCollections
заявлением. Я извлек только другие альбомы.
Я перепробовал все album
и subtype
, но это мне не помогло.
Вот мой код:
var collections: PHFetchResult<PHAssetCollection>!
@objc private func loadPhoto(notification: Notification) {
if let object = notification.object {
photoArray.removeAll()
collections = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: nil)
collections.enumerateObjects { (collection, _, _) in
let photoInAlbum = PHAsset.fetchAssets(in: collection, options: nil)
photoInAlbum.enumerateObjects({ (asset, _, _) in
let imageSize = CGSize(width: 200, height: 200)
let photoOption = PHImageRequestOptions()
photoOption.deliveryMode = .fastFormat
photoOption.isSynchronous = true
PHCachingImageManager.default().requestImage(for: asset, targetSize: imageSize, contentMode: .aspectFill, options: photoOption, resultHandler: { (image, info) in
self.photoArray.append(image!)
})
})
}
listPhotoView.reloadData()
}
}
Я ожидаю, что на выходе будут все альбомы, включая «Фотопленку», «Видео», «Избранное», «Селфи», «Скриншоты» и другие альбомы.
Комментарии:
1. все еще жду…
Ответ №1:
Изменить
collections = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: nil)
Для
collections = PHAssetCollection.fetchAssetCollections(with: . smartAlbum, subtype: .any, options: nil)
Все альбомы, которые вы хотите перечислить, — это «Смарт-альбомы». .альбом относится к созданным пользователем альбомам.