1

持続時間が 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) 

ドキュメントには次のように書かれています:

ここに画像の説明を入力

助言がありますか?ありがとう!

4

2 に答える 2

2

これは形式に関連しています - 期間は実際には Double 形式であり、%d は整数です。次のように %f を使用してみてください。

(format: "mediaType = %d AND duration > %f", PHAssetMediaType.Video.rawValue,dur)
于 2016-04-19T16:03:41.357 に答える
1

カテリーナの答えは問題ありませんが、完成したコードではありません。したがって、答えを一緒に解析するのに時間を費やす代わりに、ここに作業コードがあります:

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
于 2016-12-06T18:32:01.233 に答える