Объедините 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];
Другие вопросы по тегам