ios - 仅使用 PHAsset 和 PHAssetCollection 的 PHFetchOptions() 照片

标签 ios swift phasset phfetchoptions phassetcollection

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

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)
}

这会成功列出所有相册。

我需要什么:

我想只列出有照片的相册,排除视频。此外,将视频排除在相册内之外,例如在“所有照片”内。

我尝试过的:

let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)

这会导致崩溃并显示“获取选项中不支持的谓词:mediaType == 1”

最佳答案

我知道这是一个很晚的答案,但万一像我这样的人来到这里,您应该使用此方法来检索媒体类型。在这种情况下 PHAssetMediaType.image

func fetchAssets(with mediaType: PHAssetMediaType, options: PHFetchOptions?) -> PHFetchResult<PHAsset>

所以在 Swift 5 中它写成

let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
fetchResult = PHAsset.fetchAssets(with: .image, options: allPhotosOptions)

关于ios - 仅使用 PHAsset 和 PHAssetCollection 的 PHFetchOptions() 照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39296200/

相关文章:

ios - 如何使用照片框架从iOS相机胶卷中获取最新的照片?

ios - iOS 中两个枚举之间的成本分析

ios - 如何使用 PHImageManager 获取原始图像

ios - 将大文件下载到 iphone 会填满 ram 内存 - xcode

ios - 从 UIImageView 获取主色的坐标

ios - 快速HTML解析

ios - 遍历数组并在 Swift 中增加计数器

ios - 如何使用 PHAsset 从文件中获取 NSData

ios - 在 iOS 环境的混合应用程序中在后台启用 MQTT 服务

ios - 通过数据关键字进行 Firebase 搜索