【问题标题】:IOS Photo Library fetch album name for a given photoIOS 照片库获取给定照片的相册名称
【发布时间】: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__);

}

谢谢

【问题讨论】:

    标签: objective-c photosframework


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢瑞克斯特!这正是我所需要的。感谢您的帮助。
    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多