Объедините 2 PHFetchResults вместе
Новое в разработке Swift и iOS. Может кто-нибудь сказать мне, как я могу объединить результаты двух вызовов PHAssetCollection.fetchAssetCollectionsWithType? В частности, я пытаюсь получить один список, который содержит как стандартные альбомы, так и смарт-альбомы в одном списке.
Спасибо
2 ответа
Я не уверен, является ли это наилучшей практикой или что-то в этом роде, но мне нужно было сделать что-то подобное сегодня, и похоже, что работает следующее
@property NSMutableArray<PHAssetCollection *> *collections;
...
/* Get albums of interest */
PHFetchResult *albums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype: ... options: ...];
/* Get smart albums of interest (in my case, the Camera Roll) */
PHFetchResult *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options: ...];
/* Load albums into collections member */
for (NSUInteger i = 0; i < albums.count; ++i)
[self.collections addObject:[albums objectAtIndex:i]];
/* Load Camera Roll into collections member */
[self.collections addObject:[cameraRoll firstObject]];
Просто не забудьте инициализировать ваш элемент коллекций перед добавлением в него объектов.
Вы можете использовать fetchAssetsWithLocalIdentifiers: options: api PHAsset. Сначала получите альбом:
PHFetchResult *album = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype: ... options: ...];
Перебрать это:
for (PHAsset *asset in album) {
[self.localIDList addObject:asset.localIdentifier];
}
Используйте это для каждого нужного вам альбома. И наконец...
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:self.localIDList options:nil];