首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHFetchOptions()照片仅使用PHAsset & PHAssetCollection

PHFetchOptions()照片仅使用PHAsset & PHAssetCollection
EN

Stack Overflow用户
提问于 2016-09-02 15:41:03
回答 2查看 3.4K关注 0票数 3

我在这里使用Apple示例代码中的一个块:

代码语言:javascript
复制
override func awakeFromNib() {
    // Create a PHFetchResult object for each section in the table view.
    let allPhotosOptions = PHFetchOptions()
    allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

    let allPhotos = PHAsset.fetchAssetsWithOptions(allPhotosOptions)
    let smartAlbums = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .AlbumRegular, options: nil)

    let topLevelUserCollections = PHCollectionList.fetchTopLevelUserCollectionsWithOptions(nil)

    // Store the PHFetchResult objects and localized titles for each section.
    self.sectionFetchResults = [allPhotos, smartAlbums, topLevelUserCollections]
    self.sectionLocalizedTitles = ["", NSLocalizedString("Smart Albums", comment: ""), NSLocalizedString("Albums", comment: "")]

    PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
}

此列表成功地列出了所有专辑。

我需要的是:

我想只列出相册与照片,不包括视频。此外,不允许视频在专辑中列出,比如在“所有照片”中。

我试过的是:

代码语言:javascript
复制
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)

这导致说“获取选项中不支持的谓词: mediaType == 1”的崩溃。

EN

回答 2

Stack Overflow用户

发布于 2020-01-21 20:07:48

我知道这是一个很晚的答案,但是如果像我这样的人到了这里,你应该使用这个方法来检索一个媒体类型。在本例中,PHAssetMediaType.image

代码语言:javascript
复制
func fetchAssets(with mediaType: PHAssetMediaType, options: PHFetchOptions?) -> PHFetchResult<PHAsset>

所以在Swift 5中,它写成

代码语言:javascript
复制
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
fetchResult = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)
票数 2
EN

Stack Overflow用户

发布于 2021-08-01 08:08:35

到目前为止,它对我来说还不错:

代码语言:javascript
复制
let allAlbums = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumRegular, options: nil)
let someAlbum = allAlbums.object(at: 0)
let onlyPhotoOption = PHFetchOptions()
onlyPhotoOption.predicate = NSPredicate(format: "mediaType == %i", PHAssetMediaType.image.rawValue)
let photos = PHAsset.fetchAssets(in: someAlbum, options: onlyPhotoOption)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39296200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档