【问题标题】:Get screenshot (album) count in swift快速获取屏幕截图(专辑)计数
【发布时间】:2026-01-10 15:20:03
【问题描述】:

我是 Swift 新手,我正在尝试创建一个函数,使用 fetchAssetCollections 简单地返回截图相册中的照片数量

我有

func getNumScreenshots() -> Int {

    let collection:PHFetchResult =  
     PHAssetCollection.fetchAssetCollections(with: .album, subtype:.smartAlbumScreenshots, options: nil)

    return collection.count
}

但是,这总是返回 3,我不知道为什么(我的 iPhone 上有 600 个屏幕截图)。

【问题讨论】:

  • 你可以使用 smartAlbum

标签: ios swift phassetcollection


【解决方案1】:

你可以试试这个:

let albumsPhoto:PHFetchResult<PHAssetCollection> = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .albumRegular, options: nil)

    albumsPhoto.enumerateObjects({(collection, index, object) in
        if collection.localizedTitle == "Screenshots"{
            let photoInAlbum = PHAsset.fetchAssets(in: collection, options: nil)
            print(photoInAlbum.count) //Screenshots albums count
        }
    })

注意:使用此代码是 Swift 3

【讨论】:

  • 非常感谢,这正是我想要的!
  • 好的,祝你好运!!
  • 您可以直接使用 NSPredicate 过滤照片。
【解决方案2】:

在 Swift 4 中,有一种非常快速的方法来获取屏幕截图中的 PHAssets,而不会弄乱if elses:

斯威夫特 4:

let sc_Fetch = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: **.smartAlbumScreenshots**, options: nil).firstObject!

let sc_Assets = PHAsset.fetchAssets(in: sc_Fetch , options: nil)

print("All ScreenShots Count : " , sc_Assets.count)

【讨论】: