2017-07-01 1 views
0

J'essaie d'extraire une liste de tous les albums de la photothèque de l'utilisateur, à l'exception des albums partagés iCloud. Voici le code que je utilise jusqu'à présent:Exclure les albums partagés iCloud avec l'extraction des collections d'actifs

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]; 
} 

Si je comprends bien, la propriété userAlbumsOptions.includeAssetSourceTypes devrait filtrer iCloud partager des albums; Cependant, ils apparaissent toujours dans la liste. Quelqu'un peut-il suggérer ce que je pourrais faire de mal?

Répondre

0

Une solution possible:

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]; 
    } 
} 

Fondamentalement, récupérer toutes les collections d'actifs, mais seulement les ajouter au tableau d'albums si le sous-type n'est pas PHAssetCollectionSubtypeAlbumCloudShared. Cela fonctionne, mais je ne suis pas content. La vérification PHAssetCollectionSubtypeAlbumCloudShared ne devrait pas être nécessaire.