Выбрать только альбомы в списке PHCollectionList

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

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

2 ответа

Ты пытался:

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

Где твой <ftilerType> может быть что угодно из PHCollectionListType:

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

Вы можете использовать предикат для указания имени альбома и использовать его для извлечения конкретного альбома из коллекции 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);
        }
      }
Другие вопросы по тегам