仅获取PHCollectionList中的相册

时间:2015-05-03 17:50:25

标签: ios ios8 photokit phasset phfetchoptions

PHCollectionList是一个可以包含任意数量的相册和/或文件夹的文件夹。我目前正通过PHCollection.fetchCollectionsInCollectionList(list, options: nil)获取列表中的馆藏。

这可能会返回PHAssetCollectionPHCollectionList类型的对象。我只想知道该列表中的PHAssetCollection。文档声明您可以使用fetch选项应用过滤谓词以返回数据的子集,但我不知道如何使用它来获取专辑。如何使用PHFetchOptions仅返回给定PHAssetCollection中的PHCollectionList

2 个答案:

答案 0 :(得分:0)

你试过了吗?

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

<ftilerType>可以是PHCollectionListType的任何内容:

  • PHCollectionListTypeMomentList - 由iPhone创建的片刻(基本上所有照片分组为年份和收藏集)
  • PHCollectionListTypeFolder - 用户创建的相册(文件夹)
  • PHCollectionListTypeSmartFolder - iPhone自动创建的智能文件夹

答案 1 :(得分: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并获取List中的所有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);
        }
      }