var songs = MPMediaQuery()
var localSongs = songs.items
songList = NSMutableArray(array: localSongs)
tableView.reloadData()
var song = MPMediaItem(coder: songList[0] as NSCoder)
var currentItem = AVPlayerItem(URL: song.valueForProperty(MPMediaItemPropertyAssetURL) as NSURL)
player.replaceCurrentItemWithPlayerItem(currentItem)
player.play()
var songTitle: AnyObject! = song.valueForProperty(MPMediaItemPropertyTitle)
songName.text = songTitle as? String
sliderOutlet.value = Float(player.currentTime()) // <<-Error here
I'm building a music player and I want a slider to show the duration of the song, but I get this error
Could not find an overload for 'init' that accepts the supplied arguments
I think the problem is converting CMTime to Float.
CMTime
is a structure, containing a value
, timescale
and other fields,
so you cannot just "cast" it to a floating point value.
Fortunately, there is a conversion function CMTimeGetSeconds()
:
let cmTime = player.currentTime()
let floatTime = Float(CMTimeGetSeconds(player.currentTime()))
Update: As of Swift 3, player.currentTime
returns a
TimeInterval
which is a type alias for Double
.
Therefore the conversion to Float
simplifies to
let floatTime = Float(player.currentTime)
CMTime is a structure, containing a value, timescale, flags and epoch. So you cannot just "cast" it to a floating point value.
You can use the value by directly writing
sliderOutlet.value = Float(player.currentTime().value)
But this will only give the value of the player which is in milliseconds. To get the value in seconds you use this:
sliderOutlet.value = Float(CMTimeGetSeconds(player.currentTime()))
Mind well this might also won't be the correct way you should have the value of your slider.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With