2016-08-03 4 views
0

Ich habe überall gesucht, konnte aber keine Antwort darauf finden.IOS Photo Library holen Sie den Albumnamen für ein gegebenes Foto

In IOS PhotosFramework, wie nehme ich ein Bild/PHAsset und finde heraus, welchen Sammlungen/Alben es zugeordnet ist?

Ich weiß bereits, wie man eine Liste aller Alben von dort bekommt, ich kann auch alle Bilder in jedem Album bekommen. Aber wie mache ich das anders herum - d. H. Für einen bestimmten PHAsset, wie man den Namen von Album/Collections erhält, die ihm zugewiesen sind.

Hier ist der Code ich eine Liste aller Alben in Camera Roll bekommen haben:

-(void) listAllAlbums{ 

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

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

    NSLog(@"--------- entered %s ------------- ", __PRETTY_FUNCTION__); 

    [userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop) { 
     NSLog(@"album title %@", collection.localizedTitle); 
    }]; 

    NSLog(@"--------- end of %s ------------- ", __PRETTY_FUNCTION__); 

} 

Dank

Antwort

1

alten Apple-Werbespots paraphrasieren ... gibt es eine API für die.

Wenn Sie eine PHAsset haben, können Sie die Gruppe der Alben mit fetchAssetCollectionsContainingAsset:withType:options: erhalten. Wenn Sie nur vom Benutzer erstellte Alben erstellen möchten, übergeben Sie PHAssetCollectionTypeAlbum für den Parameter type Parameter; Wenn Sie auch intelligente Alben (wie die Kamerarolle oder die anderen automatisch gesammelten Alben wie Panoramen oder Screenshots) möchten, rufen Sie sie erneut an und übergeben Sie PHAssetCollectionTypeSmartAlbum.

Nach dem Aufruf, können Sie durch die Ergebnisse aufzählen und lesen Sie die von jedem. (By the way, PHFetchResult unterstützt NSFastEnumeration, so dass Sie sich nicht enumerateObjectsUsingBlock verwenden, wenn Sie aus irgendeinem Grunde zu wollen ... Sie können nur einen for verwenden -. in loop)

+0

Dank Rickster! Genau das habe ich gebraucht. schätze deine Hilfe. – Pankaj

Verwandte Themen