IOS 照片库获取给定照片的相册名称

IOS Photo Library fetch album name for a given photo

我到处寻找,但一直找不到答案。

在 IOS PhotosFramework 中,我如何拍摄 image/PHAsset 并找出所有 collections/albums 它分配给了什么?

我已经知道如何从那里获取所有相册的列表,我还可以获取每个相册中的所有图像。但是我该怎么做呢 - 即对于给定的 PHAsset 如何获取分配给它的 Album/Collections 的名称。

这是我必须获取相机胶卷中所有相册列表的代码:

-(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__);

}

谢谢

套用旧的 Apple 广告...有一个 API。

如果您有 PHAsset,您可以使用 fetchAssetCollectionsContainingAsset:withType:options: 获取包含它的专辑集。如果您只想要用户创建的相册,请为 type 参数传递 PHAssetCollectionTypeAlbum;如果你还想要智能相册(如相册,或其他自动收集的相册,如全景或截图),再次调用并传递 PHAssetCollectionTypeSmartAlbum.

调用后,您可以枚举结果并读取每个结果的 localizedTitle。 (顺便说一下,PHFetchResult 支持 NSFastEnumeration,所以你不必使用 enumerateObjectsUsingBlock 除非你出于某种原因想要使用......你可以只使用 for -in 循环。)