Получить снимок экрана (альбома) в Swift

Я новичок в Swift и пытаюсь создать функцию, которая просто возвращает количество фотографий в вашем альбоме со скриншотами, используя fetchAssetCollections

я имею

func getNumScreenshots() -> Int {

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

    return collection.count
}

Тем не менее, это всегда возвращает 3, и я не уверен, почему (у меня есть 600 скриншотов на моем iPhone).

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

В Swift 4 есть очень простой способ получить PHAssets просто скриншоты без головной боли и раздражает if else:

Свифт 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)
Другие вопросы по тегам