gpt4 book ai didi

ios8 - 为 Photokit Fetch 格式化 NSPredicate

转载 作者:行者123 更新时间:2023-12-01 11:36:46 25 4
gpt4 key购买 nike

我在理解如何为 photokit 查询制定文件管理器时遇到了很多麻烦,特别是当您只想检索某些媒体类型时如何制定 NSPredicate。就我而言,我正在尝试检索所有相册(即 PHCollectionAssets),但我只想要这些相册中的照片。我对如何制定我的 NSPredicate 来做到这一点感到困惑。我在过滤某些 mediaSubtypes 的文档中找到了下面的代码,但我只想按 PHAssetMediaTypeImage mediaType 进行过滤。有人能够解释下面 NSPredicate 代码的语法以及我如何按照 @"mediaType == %@, PHAssetMediaTypeImage" 设置谓词,这不会导致我的 PHFetchRequest崩溃,就像现在一样?

PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.predicate =
[NSPredicate predicateWithFormat:
@"(mediaSubtype & %d) != 0 || (mediaSubtype & %d) != 0",
PHAssetMediaSubtypePhotoPanorama, PHAssetMediaSubtypeVideoHighFrameRate];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithOptions:fetchOptions];

最佳答案

似乎有一个微妙的区别:PHAssetMediaSubtype 是一个位掩码值,而 PHAssetMediaType 只是一个 int。它并没有真正改变它们的性质,但谓词解释器可能只是拒绝将按位与运算符 & 应用于 PHAssetMediaType。为此,您需要使用常规相等运算符 ==

因此,如果 fetchAssetsWithMediaType 对您来说不够好,因为您只需要给定集合中的 Assets 并且没有 fetchAssetsInAssetCollection:withMediaType: 方法,您可以这样做:

PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.predicate =
[NSPredicate predicateWithFormat:@"mediaType == %d", PHAssetMediaTypeImage];
PHFetchResult *assetsFetchResult =
[PHAsset fetchAssetsInAssetCollection:anAssetCollection options:fetchOptions];

关于ios8 - 为 Photokit Fetch 格式化 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com