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
我正在构建一个音乐播放器,我想要一个滑块来显示歌曲的持续时间,但我收到此错误
无法找到&#39; init&#39;接受提供的参数
我认为问题是将CMTime转换为Float。
答案 0 :(得分:21)
CMTime
是结构,包含value
,timescale
和其他字段,
所以你不能只是将它“转换”为浮点值。
幸运的是,有一个转换函数CMTimeGetSeconds()
:
let cmTime = player.currentTime()
let floatTime = Float(CMTimeGetSeconds(player.currentTime()))
更新:从 Swift 3开始, player.currentTime
返回
TimeInterval
这是Double
的类型别名。
因此,转换为Float
简化为
let floatTime = Float(player.currentTime)
答案 1 :(得分:0)
CMTime是一个结构,包含值,时间刻度,标志和纪元。因此,您不能将其“转换”为浮点值。
您可以直接编写
来使用该值sliderOutlet.value = Float(player.currentTime().value)
但是这只会给出播放器的值,以毫秒为单位。要在几秒钟内获得该值,请使用:
sliderOutlet.value = Float(CMTimeGetSeconds(player.currentTime()))
请注意,这可能也不是你应该拥有滑块值的正确方法。