我能够使用以下功能成功检索视频:
func getVideoAssets() {
let options = PHFetchOptions()
options.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: false) ]
options.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
videos = PHAsset.fetchAssets(with: options)
print(videos)
prepareCollectionView()
}但是,我只想获得景观视频,因为我的应用程序只支持景观视频。我尝试了以下几点:
options.predicate = NSPredicate(format: "(mediaType = %d) AND (pixelWidth > pixelHeight)", PHAssetMediaType.video.rawValue)但我遇到了以下情况:
“‘NSInvalidArgumentException”,原因:“获取选项中不支持的谓词: pixelWidth >pixelHeight”
看来我不能用那个方法过滤。还有别的办法可以这样做吗?似乎NSPredicate只接受参数,而不对PHAsset中的2个值进行比较。
如何使用PHFetchOptions检索景观视频?
发布于 2018-07-09 06:55:58
最后,我使用了一种解决方案,它不使用NSPredicate,而是在检索到资产数组后对其进行筛选。这对我来说很好,我本来希望使用NSPredicate,但我很满意。
希望这能帮助到其他人:
// get landscape only content
let unfilteredVideosArray = PHAsset.fetchAssets(with: options)
var filteredVideosArray : [PHAsset] = []
for i in 0..<unfilteredVideosArray.count {
let video = unfilteredVideosArray.object(at: i)
if video.pixelWidth > video.pixelHeight {
filteredVideosArray.append(video)
}
}
self.videos = filteredVideosArrayhttps://stackoverflow.com/questions/51227473
复制相似问题