Выбрать только альбомы в списке 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);
}
}