PhotoKit: includeAllBurstAssets в PHFetchOptions не работает
Я пытаюсь использовать includeAllBurstAssets PHFetchOptions. В моем фотопленке есть около 5 снимков (у каждого по 10 фотографий).
Для перечисления активов в Camera Roll я делаю следующее:
PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.includeAllBurstAssets = YES;
PHFetchResult *fetchResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:fetchOptions];
PHFetchResult *assetFetch = [PHAsset fetchAssetsInAssetCollection:fetchResult[0] options:fetchOptions];
NSLog(@"Found assets %lu",(unsigned long)assetFetch.count);
Неважно, если я установлю для свойства includeAllBurstAssets значение NO или YES, я получу точно такое же количество активов. Я ожидал, что число будет выше, если для includeAllBurstAssets задано значение YES. Это ошибка или я неправильно интерпретирую includeAllBurstAssets.
1 ответ
Существует специальный метод для запроса всех изображений последовательности серий.
[PHAsset fetchAssetsWithBurstIdentifier:options:]
В вашем случае вам нужно перебрать свой объект assetFetch и проверить, представляет ли PHAsset пакет.
PHAsset
определяет свойство BOOL representsBurst
Если это вернется YES
получить все активы для этой последовательности пакетов.
Вот фрагмент кода, который может помочь понять:
if (asset.representsBurst) {
PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.includeAllBurstAssets = YES;
PHFetchResult *burstSequence = [PHAsset fetchAssetsWithBurstIdentifier:asset.burstIdentifier options:fetchOptions];
PHAsset *preferredAsset = nil;
for (PHAsset *asset_ in burstSequence) {
if (PHAssetBurstSelectionTypeUserPick == asset.burstSelectionTypes || PHAssetBurstSelectionTypeAutoPick == asset.burstSelectionTypes) {
asset = preferredAsset = asset_;
}
}
if (!preferredAsset) {
asset = burstSequence.firstObject;
}
}
Как вы можете видеть, burstSelectionTypes не всегда установлены соответственно. иногда PHAssetBurstSelectionTypeNone для всех активов последовательности пакета.