Я могу успешно получить видео, используя следующую функцию:
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()
}
Однако я хотел бы получать только видео LANDSCAPE, так как мое приложение поддерживает только видео ландшафта. Я пробовал следующее:
options.predicate = NSPredicate(format: "(mediaType = %d) AND (pixelWidth > pixelHeight)", PHAssetMediaType.video.rawValue)
Но я получаю следующий сбой:
«NSInvalidArgumentException», причина: «Неподдерживаемый предикат в параметрах выборки: pixelWidth > pixelHeight»
Похоже, я не могу фильтровать с помощью этого метода. Есть ли другой способ сделать это? Кажется, что NSPredicate принимает только аргументы и не сравнивает два значения в PHAsset.
Как я могу получать только пейзажные видео с помощью PHFetchOptions?
videos
в новый массив на основе проверки ориентации. - person rmaddy   schedule 08.07.2018