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

问题描述:

我一直在寻找无处不在,但一直未能找到答案。IOS图片库获取给定照片的相册名称

在IOS PhotosFramework中,我是如何拍摄图像/ PHAsset并找出所有收藏/相册分配给的内容?

我已经知道如何从那里获得所有专辑的列表,我也可以获取每张专辑中的所有图像。但是我怎样才能以相反的方式做到这一点 - 即给定PHAsset如何获取分配给它的唱片集/收藏集的名称。

这里是我得在相机胶卷的所有专辑的列表的代码:

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

} 

感谢

套用老苹果的广告......对此有专门的API。

如果您有PHAsset,您可以使用fetchAssetCollectionsContainingAsset:withType:options:获取包含它的相册集。如果您只需要用户创建的相册,请通过PHAssetCollectionTypeAlbum获取type参数;如果您还想要智能相册(如相机胶卷,或其他自动收集的相册(如全景图或屏幕截图)),请再次调用并通过PHAssetCollectionTypeSmartAlbum

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

+0

感谢Rickster!这正是我需要的。感谢你的帮助。 – Pankaj