Извличане само на албуми в PHCollectionList

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

Това може да върне обекти от тип PHAssetCollection или PHCollectionList. Интересувам се само да знам за PHAssetCollections в този списък. В документите се посочва, че можете да приложите предикат за филтър, като използвате опциите за извличане, за да върнете подмножество от данните, но не виждам как бих използвал това, за да получа само албуми. Как използвате PHFetchOptions, за да върнете само PHAssetCollections в даден PHCollectionList?


person Jordan H    schedule 03.05.2015    source източник


Отговори (2)


Опитвали ли сте:

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

Където вашето <ftilerType> може да бъде всичко от PHCollectionListType:

  • PHCollectionListTypeMomentList – Моменти, създадени от iPhone (по същество всички снимки са групирани в година и колекции)
  • PHCollectionListTypeFolder - създадени от потребителя албуми (папки)
  • PHCollectionListTypeSmartFolder - Интелигентни папки, създадени от iPhone автоматично
person snowbound    schedule 01.07.2015

Можете да използвате predicate, за да посочите името на албума и да го използвате, за да извлечете конкретен албум от 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);

Или можете да поставите нула в опциите и да получите всички 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);
        }
      }
person Ohmy    schedule 02.10.2015