Xcode 6- SWIFT-将CMTime转换为Float

Abd*_*u23 9 uislider cmtime swift

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
Run Code Online (Sandbox Code Playgroud)

我正在构建一个音乐播放器,我想要一个滑块来显示歌曲的持续时间,但是我收到了这个错误

找不到接受提供的参数的'init'的重载

我认为问题是将CMTime转换为Float.

Mar*_*n R 21

CMTime是一个结构,包含value,timescale以及其他领域,所以你不能只是"投"到一个浮点值.

幸运的是,有一个转换功能CMTimeGetSeconds():

let cmTime = player.currentTime()
let floatTime = Float(CMTimeGetSeconds(player.currentTime()))
Run Code Online (Sandbox Code Playgroud)

更新:Swift 3开始, player.currentTime返回 TimeInterval一个类型别名Double.因此转换Float简化为

let floatTime = Float(player.currentTime)
Run Code Online (Sandbox Code Playgroud)