如何知道 PHAssetCollection 是不是是最近删除的集合?

Posted

技术标签:

【中文标题】如何知道 PHAssetCollection 是不是是最近删除的集合?【英文标题】:How to know if an PHAssetCollection is the recently deleted collection?如何知道 PHAssetCollection 是否是最近删除的集合? 【发布时间】:2015-02-02 01:13:34 【问题描述】:

最近添加的集合有一个子类型:PHAssetCollectionSubtypeSmartAlbumRecentlyAdded。然而没有 assetCollectionSubtype 将标识“最近删除”集合。

在我的例子中,这是对“最近删除”集合的描述: (ios 8.1.3): DF876BFD-...-C97F4628467C/L0/040 Recently Deleted assetCollectionType=2/1000000201

这表明它是PHAssetCollectionTypeSmartAlbum 类型。但是子类型1000000201到底是什么?

根据文档,201 应该是 PHAssetCollectionSubtypeSmartAlbumPanoramas

神奇的数字1000000201 可以相信永远不会改变吗?应该不会吧。

但是,您可以通过以下方式检索最近删除的集合:

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:1000000201 options:nil];

这个特别的智能相册有一个主要区别:PHAssets 不能(再次)删除,因为这是垃圾。因此,必须知道是否应该向用户显示删除选项。

有人有想法吗?

【问题讨论】:

你有没有找到除了localizedTitle之外的其他方法来识别被删除的相册 嗨,有谁知道这样做的最新方法吗? 截至 2021 年底,这个神奇的数字 1000000201 似乎仍然有效:<PHAssetCollection: 0x7f82dea22c50> 72053882-BF20-4D4A-B1A5-03D1DDAE1707/L0/040, title:"Recently Deleted", subtitle:"(null)" assetCollectionType=2/1000000201 【参考方案1】:

关于挑选“最近删除”的集合,这里有一个解决方法。

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum
                                                                      subtype:PHAssetCollectionSubtypeAlbumRegular
                                                                      options:nil];

__block PHAssetCollection *recentlyDeletedCollection;
[smartAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *smartAlbum, NSUInteger idx, BOOL *stop) 
    if ([smartAlbum.localizedTitle isEqualToString:@"Recently Deleted"]) 
        NSLog(@"Recently Deleted album is at %ld", idx);
        recentlyDeletedCollection = smartAlbums[idx];
    
];

【讨论】:

这仅适用于英语,因为我认为它是“localizedTitle”。

以上是关于如何知道 PHAssetCollection 是不是是最近删除的集合?的主要内容,如果未能解决你的问题,请参考以下文章

删除 PHAssetCollection (Swift)

如何从 PHAssetCollection 正确获取自定义专辑

创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针

如何编辑或重命名 PHAssetCollection LocalizedTitle?

何时使用 PHAsset、PHCollection、PHAssetCollection 和 PHCollectionList

将 UIImage 保存到 PHAssetCollection