IOS 照片库获取给定照片的相册名称
Posted
技术标签:
【中文标题】IOS 照片库获取给定照片的相册名称【英文标题】:IOS Photo Library fetch album name for a given photo 【发布时间】:2016-08-03 07:48:41 【问题描述】:我一直在到处寻找,但无法找到答案。
在 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__);
谢谢
【问题讨论】:
【参考方案1】:套用旧的 Apple 广告...有一个 API。
如果您有PHAsset
,您可以使用fetchAssetCollectionsContainingAsset:withType:options:
获取包含它的专辑集。如果您只想要用户创建的专辑,请将PHAssetCollectionTypeAlbum
传递给 type
参数;如果您还想要智能相册(如相机胶卷,或其他自动收集的相册,如全景或屏幕截图),请再次调用并传递PHAssetCollectionTypeSmartAlbum
。
调用之后,您可以枚举结果并读取每个结果的localizedTitle
。 (顺便说一句,PHFetchResult
支持NSFastEnumeration
,所以你不必使用enumerateObjectsUsingBlock
,除非出于某种原因……你可以只使用for
-in
循环。)
【讨论】:
谢谢瑞克斯特!这正是我所需要的。感谢您的帮助。以上是关于IOS 照片库获取给定照片的相册名称的主要内容,如果未能解决你的问题,请参考以下文章