2016-11-22 1 views
1

제외한 모든 스마트 앨범을 가져 오기? 옵션 매개 변수를 사용하여 술어를 추가해야한다고 가정합니다. 그러나 술어의 형식을 지정하는 방법을 모르겠습니다.아이폰 OS PhotoKit :</p> <p><code>PHAssetCollection.fetchAssetCollections(with: PHAssetCollectionType.smartAlbum, subtype: PHAssetCollectionSubtype.albumRegular, options: nil)</code></p> <p>가 어떻게이 페치에서 파노라마 스마트 앨범을 제외 할 수 있습니다 : 나는 모든 스마트 앨범을 가져 추적 코드를 사용하고 파노라마

+0

가져 오기를 수행 한 다음 Panoramas 앨범을 삭제하거나 무시하는 것이 더 쉬울까요? – matt

답변

0

파노라마를 제외하려면 배열을 사용하고 필요한 컬렉션 만 가져 오는 것이 좋습니다. 즉, 허용 목록 모음입니다. 또는 컬렉션을 열거하고 파노라마를 제외 할 수 있습니다. 화이트리스트는 또한 수집 순서를 제어합니다.

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 
}