【问题标题】:Exclude iCloud shared albums with fetching asset collections通过获取资产集合排除 iCloud 共享相册
【发布时间】:2017-12-05 11:51:54
【问题描述】:

我正在尝试获取用户照片库中所有相册的列表,不包括任何 iCloud 共享相册。这是我目前使用的代码:

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

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

for (PHAssetCollection *album in userAlbums) {
    [self.albums addObject:album];
}

如果我理解正确,userAlbumsOptions.includeAssetSourceTypes 属性应该过滤掉 iCloud 共享相册;但是,它们仍然显示在列表中。谁能建议我可能做错了什么?

【问题讨论】:

    标签: ios phassetcollection phassetslibrary


    【解决方案1】:

    一种可能的解决方案:

    PHFetchOptions *userAlbumsOptions = [PHFetchOptions new];
    userAlbumsOptions.predicate = [NSPredicate predicateWithFormat:@"estimatedAssetCount > 0"];
    
    PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:userAlbumsOptions];
    
    for (PHAssetCollection *album in userAlbums) {
        if (album.assetCollectionSubtype != PHAssetCollectionSubtypeAlbumCloudShared) {
            [self.albums addObject:album];
        }
    }
    

    基本上,检索所有资产集合,但仅当子类型不是PHAssetCollectionSubtypeAlbumCloudShared 时才将它们添加到专辑数组中。这行得通,但我对此并不满意。 PHAssetCollectionSubtypeAlbumCloudShared 检查应该不是必需的。

    【讨论】:

    • 我可以获取共享此相册的 cloudOwner 名称吗?
    猜你喜欢
    • 2020-03-23
    • 2022-12-12
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2023-01-21
    • 2014-11-08
    • 2023-03-12
    • 2023-03-27
    相关资源
    最近更新 更多