首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只获取包含至少一张照片的PHAssetCollections

只获取包含至少一张照片的PHAssetCollections
EN

Stack Overflow用户
提问于 2017-06-28 11:06:35
回答 1查看 4K关注 0票数 8

在iOS PhotoKit中,我可以获取所有非空的专辑,如下所示:

代码语言:javascript
运行
复制
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "estimatedAssetCount > 0")
let albumFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: albumFetchOptions)

albumFetchResult.enumerateObjects({ (collection, _, _) in
    // Do something with the album...
})

然后我只能从相册中得到这样的照片:

代码语言:javascript
运行
复制
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetResourceType.photo.rawValue)
let fetchResults = PHAsset.fetchAssets(in: collection, options: fetchOptions)

但是第一部分可以给我只带视频的相册,这意味着在我将谓词应用到第二部分之后,相册将是空的。在我开始使用之前,有没有办法过滤掉第一部分的那些专辑?

EN

Stack Overflow用户

回答已采纳

发布于 2017-10-10 11:03:12

看来,如果不获取集合中的项,就不能像这样对集合进行过滤。有关可用的获取选项,请参见医生们;不允许按特定媒体类型的数量进行筛选。

实现这一目标的方法是获取用户创建的所有相册,然后使用只返回图像的谓词从相册中获取资产。

因此,要把它放在代码中:

代码语言:javascript
运行
复制
var userCollections: PHFetchResult<PHAssetCollection>!
// Fetching all PHAssetCollections with at least some media in it
let options = PHFetchOptions()
    options.predicate = NSPredicate(format: "estimatedAssetCount > 0")
// Performing the fetch
userCollections = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumRegular, options: options)

接下来,通过指定谓词从集合中获取资产:

代码语言:javascript
运行
复制
// Getting the specific collection (I assumed to use a tableView)
let collection = userCollections[indexPath.row]
let optionsToFilterImage = PHFetchOptions()
    optionsToFilterImage.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
// Fetching the asset with the predicate to filter just images
let justImages = PHAsset.fetchAssets(in: collection, options: optionsToFilterImage)

最后,计算图像的数量:

代码语言:javascript
运行
复制
if justImages.count > 0 {
    // Display it
} else {
    // The album has no images
}
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44800729

复制
相关文章

相似问题

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