Исключение общих альбомов iCloud с получением коллекций активов

Я пытаюсь получить список всех альбомов в библиотеке фотографий пользователя, за исключением общих альбомов iCloud. Вот код, который я использую до сих пор:

PHFetchOptions *userAlbumsOptions = [PHFetchOptions new];
userAlbumsOptions.predicate = [NSPredicate predicateWithFormat:@"estimatedAssetCount > 0"];
userAlbumsOptions.includeAssetSourceTypes = PHAssetSourceTypeUserLibrary;

PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:userAlbumsOptions];

for (PHAssetCollection *album in userAlbums) {
    [self.albums addObject:album];
}

Если я правильно понял, свойство userAlbumsOptions.includeAssetSourceTypes должно отфильтровывать общие альбомы iCloud; однако они все еще отображаются в списке. Может ли кто-нибудь предложить, что я могу делать неправильно?


person mashers    schedule 01.07.2017    source источник


Ответы (1)


Одно из возможных решений:

PHFetchOptions *userAlbumsOptions = [PHFetchOptions new];
userAlbumsOptions.predicate = [NSPredicate predicateWithFormat:@"estimatedAssetCount > 0"];

PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:userAlbumsOptions];

for (PHAssetCollection *album in userAlbums) {
    if (album.assetCollectionSubtype != PHAssetCollectionSubtypeAlbumCloudShared) {
        [self.albums addObject:album];
    }
}

По сути, извлеките все коллекции активов, но добавьте их в массив альбомов только в том случае, если подтип не PHAssetCollectionSubtypeAlbumCloudShared. Это работает, но я не доволен этим. Проверка PHAssetCollectionSubtypeAlbumCloudShared не требуется.

person mashers    schedule 01.07.2017
comment
Могу ли я получить имя владельца облака, который поделился этим альбомом? - person Dixit Akabari; 26.11.2019