iOS PhotoKit:获取除全景之外的所有智能相册

iOS PhotoKit:获取除全景之外的所有智能相册,ios,swift3,photokit,Ios,Swift3,Photokit,我正在使用以下代码获取所有智能相册: PHAssetCollection.fetchAssetCollections(带:PHAssetCollectionType.smartAlbum,子类型:PHAssetCollectionSubtype.albumRegular,选项:nil) 如何将Panoramas smart相册排除在此提取中?我假设我必须使用选项PARAM添加一个谓词,但是我不知道如何格式化谓词。 < P>如果你想排除全景图,考虑使用一个数组,只获取你需要的集合。换句话说,白名单

我正在使用以下代码获取所有智能相册:

PHAssetCollection.fetchAssetCollections(带:PHAssetCollectionType.smartAlbum,子类型:PHAssetCollectionSubtype.albumRegular,选项:nil)


如何将Panoramas smart相册排除在此提取中?我假设我必须使用选项PARAM添加一个谓词,但是我不知道如何格式化谓词。

< P>如果你想排除全景图,考虑使用一个数组,只获取你需要的集合。换句话说,白名单集合。或者,您可以枚举集合并排除全景。白名单还提供了对集合顺序的控制

var smartAlbums: [PHAssetCollection] = []
let subtypes:[PHAssetCollectionSubtype] = [
    // all photos collection
    // .smartAlbumUserLibrary,
   .smartAlbumFavorites,
   .smartAlbumPanoramas,
   .smartAlbumLivePhotos,
   .smartAlbumBursts,
   .smartAlbumDepthEffect,
   .smartAlbumLongExposures,
   .smartAlbumScreenshots,
   .smartAlbumSelfPortraits
]

smartAlbums = fetchSmartCollections(with: .smartAlbum, subtypes: subtypes)

private func fetchSmartCollections(with: PHAssetCollectionType, subtypes: [PHAssetCollectionSubtype]) -> [PHAssetCollection] {
    var collections:[PHAssetCollection] = []
    let options = PHFetchOptions()
    options.includeHiddenAssets = false

    for subtype in subtypes {
        if let collection = PHAssetCollection.fetchAssetCollections(with: with, subtype: subtype, options: options).firstObject {
            collections.append(collection)
        }
    }

    return collections
}

如果只进行提取,然后删除或忽略全景相册,不是更容易吗?