如何知道 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];
这个特别的智能相册有一个主要区别:PHAsset
s 不能(再次)删除,因为这是垃圾。因此,必须知道是否应该向用户显示删除选项。
有人有想法吗?
【问题讨论】:
你有没有找到除了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 正确获取自定义专辑
创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针
如何编辑或重命名 PHAssetCollection LocalizedTitle?
何时使用 PHAsset、PHCollection、PHAssetCollection 和 PHCollectionList