使用“hidden = YES”谓词崩溃获取 PHAsset
Posted
技术标签:
【中文标题】使用“hidden = YES”谓词崩溃获取 PHAsset【英文标题】:Fetch PHAsset with 'hidden = YES' predicate crash 【发布时间】:2015-06-09 15:07:14 【问题描述】:如documentation 中所列,PHAsset 支持hidden (or isHidden)
获取密钥。但是当我尝试获取隐藏资产时,我的应用程序崩溃并显示以下日志:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“获取选项中不支持的谓词:隐藏 == 1”
这里是示例代码:
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.wantsIncrementalChangeDetails = YES;
options.includeAllBurstAssets = YES;
options.includeHiddenAssets = YES;
options.predicate = [NSPredicate predicateWithFormat:@"hidden = YES"];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithOptions:options];
return fetchResult;
【问题讨论】:
【参考方案1】:我在第一个答案中没有仔细阅读问题,也许这会有所帮助
如果您只想要隐藏的专辑,为什么不使用? 子类型:PHAssetCollectionSubtypeSmartAlbumAllHidden
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.wantsIncrementalChangeDetails = YES;
options.includeAllBurstAssets = YES;
options.includeHiddenAssets = YES;
options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d",PHAssetMediaTypeImage];
PHFetchResult *albums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumAllHidden options:nil];
【讨论】:
获取隐藏资产的方法有多种,包括您的一种。问题不是关于“如何”,而是“为什么我的有效代码会崩溃”。 好的明白了,无论如何我都会留下答案。以上是关于使用“hidden = YES”谓词崩溃获取 PHAsset的主要内容,如果未能解决你的问题,请参考以下文章
UIView: alpha:0, hidden:YES, removeViewFromSuperview 和 frame.origin.y = -100000 之间的性能/内存差异;
NSManagedObjectContext -save:使用 NSPredicate 时崩溃