2017-06-29 4 views
0

Im ayant un problème de type de données - avec AVPlayer à Swift me donne un CMTimeRange lorsque je tente d'obtenir:Impossible de convertir Swift CMTimeRange à Float ou obtenir le numéro?

AudioPlayerManager.shared.currentTrack?.playerItem?.loadedTimeRanges[0] 

Ce qui est imprimé avec ceci est:

Optional(CMTimeRange: {{0/1 = 0.000}, {1016722/600 = 1694.537, rounded}}) 

J'ai essayé tous les membres et essayant d'obtenir une valeur pour la clé cmtimerange ici, mais j'ai juste des erreurs. J'ai besoin de la valeur finale du 1694 en tant que flotteur.

Comment faire?

+0

Vous devriez [modifier] votre question avec ce que vous avez essayé et les erreurs que vous obtenez. – rmaddy

Répondre

1

Un CMTimeRange est juste cela, une série de fois. Il a start, end, et duration propriétés. Chacun d'eux est un CMTime. CMTime a une propriété seconds en tant que Double.

if let range = AudioPlayerManager.shared.currentTrack?.playerItem?.loadedTimeRanges[0] { 
    let seconds = Float(range.duration.seconds) 
} 

Cela vous donnera le nombre de secondes comme Float. Changez duration en end si c'est ce dont vous avez besoin.

+0

Comment l'utiliser dans Objective c? –