2016-04-19 1 views
1

J'essaie d'aller chercher tous les Vidéos dont la durée est supérieure à 1.5 sec.PHFetchOptions Durée ne fonctionne pas correctement

Ce que j'ai essayé

 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) 

La docs dit:

enter image description here

Toutes les suggestions? Merci!

+0

Quel est le problème actuellement? Vous n'obtenez pas de résultats ou vous obtenez des résultats erronés? –

+0

@KaterynaGridina mauvais résultats. Comme il ignore la partie durée (seulement) –

+0

peut être liée au format - la durée est en fait double format, et% d est pour entier. Essayez d'utiliser% f, comme: (format: "mediaType =% d ET durée>% f", PHAssetMediaType.Video.rawValue, dur) –

Répondre

2

Il est lié au format - la durée est en fait double format, et% d est un nombre entier. Essayez d'utiliser% f, comme:

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

La réponse de Kateryna est bien, mais ce n'est pas le code terminé. Donc, au lieu de passer du temps à analyser la réponse ensemble, voici le code de travail:

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