如何在Objective-C中用PHFetchOptions筛选已收藏图片(含日期筛选场景)
解决PHAsset筛选收藏图片的问题
嘿,我刚好做过类似的需求,其实这个问题很容易解决——PHAsset本身就自带了isFavorite属性用来标识是否为收藏的图片,你只需要把这个判断条件追加到现有谓词里就行!
修改后的完整代码示例
你的日期范围筛选逻辑已经没问题,现在只需要在谓词中加入收藏状态的判断:
PHFetchOptions *fetchOptions = [PHFetchOptions new]; // 组合日期范围 + 已收藏的双重筛选条件 fetchOptions.predicate = [NSPredicate predicateWithFormat:@"(creationDate >= %@) && (creationDate <= %@) && (isFavorite == YES)", startDateMinus24Hours, endDatePlus24Hours]; _assetsFetchResults = [PHAsset fetchAssetsWithOptions:fetchOptions];
额外补充说明
- 如果需要筛选未收藏的图片,只需要把条件改成
isFavorite == NO即可; - PHAsset还有不少其他可用于谓词筛选的属性,比如
isHidden(是否被隐藏)、mediaType(区分照片/视频)等,这些都可以直接加到谓词里组合出更复杂的筛选逻辑; - 你可以直接在Xcode中查看PHAsset的头文件,里面会明确标注哪些属性支持NSPredicate查询,这比搜关键词更直接可靠。
内容的提问来源于stack exchange,提问作者tsuyoski




