PHFetchOptions Duration не работает должным образом

Я пытаюсь получить все видео, длительность которых превышает 1,5 сек.

Что я пробовал

        let videoOptions = PHFetchOptions()
        let dur : Double = 1.5
        videoOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
        videoOptions.predicate = NSPredicate(format: "mediaType = %d AND duration > %d", PHAssetMediaType.Video.rawValue,dur)
        VideoCollectionFetchResult =  PHAsset.fetchAssetsWithOptions(videoOptions) 

Документы говорят:

введите описание изображения здесь

Какие-либо предложения? Спасибо!

2 ответа

Решение

Это связано с форматом - длительность фактически является двойным форматом, а%d для целого числа. Попробуйте использовать%f, например:

(format: "mediaType = %d AND duration > %f", PHAssetMediaType.Video.rawValue,dur)

Катерина ответит хорошо, но это не законченный код. Поэтому вместо того, чтобы тратить время на разбор ответа, вот рабочий код:

let videoOptions = PHFetchOptions()
videoOptions.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: true) ]
videoOptions.predicate = NSPredicate(format: "mediaType = %d AND duration > %f", PHAssetMediaType.video.rawValue, 1.5) // only video and 1.5 seconds or more

return videoOptions
Другие вопросы по тегам