2015-05-03 8 views
3

A PHCollectionList - это папка, которая может содержать любое количество альбомов и/или папок. В настоящее время я собираю коллекции в списке через PHCollection.fetchCollectionsInCollectionList(list, options: nil).Выбирать только альбомы в PHCollectionList

Это может вернуть объекты типа PHAssetCollection или PHCollectionList. Меня интересует только знание PHAssetCollection s в этом списке. В документе docs вы можете применить предикат фильтра, используя параметры выборки, чтобы вернуть подмножество данных, но я не вижу, как использовать это, чтобы получать только альбомы. Как вы используете PHFetchOptions, чтобы вернуть только PHAssetCollection s в заданном PHCollectionList?

ответ

0

Вы пробовали:

[PHCollectionList fetchCollectionListsWithType:<filterType> subtype:nil optionsnil] 

Где ваш <ftilerType> может быть что угодно, от PHCollectionListType:

  • PHCollectionListTypeMomentList - Моменты, созданные iPhone (практически все фотографии сгруппированы в год и коллекции)
  • PHCollectionListTypeFolder - пользователь Al бомжи (папки)
  • PHCollectionListTypeSmartFolder - Умные папки, созданные с помощью iPhone автоматически
0

Вы можете использовать предикат, чтобы указать имя альбома и использовать его для извлечения конкретного альбома из collectionList.

PHFetchOptions *fetchOptions = [PHFetchOptions new]; 
fetchOptions.predicate = [NSPredicate predicateWithFormat:@"title = %@", ABC]; 

PHFetchResult *collectionsFetchResult = [PHCollection fetchCollectionsInCollectionList:self.collectionList options:fetchOptions]; 

PHAssetCollection *ABCAlbum = collectionsResult.firstObject; 
    NSLog(@"ABC album details: %@", ABCAlbum); 

Или вы можете положить nil в опции и получить все AssetCollections в Списке.

PHFetchResult *collectionsFR = [PHCollection fetchCollectionsInCollectionList:list options:nil]; 
     if (collectionsFR.count > 0) { 
     for (PHAssetCollection *collection in collectionsFR) { 
      // do something with each album 
      NSLog(@"collection is %@", collection); 
     } 
     }