13
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

音楽プレーヤーを構築していて、スライダーで曲の長さを表示したいのですが、このエラーが発生します

指定された引数を受け入れる「init」のオーバーロードが見つかりませんでした

問題は CMTime を Float に変換していると思います。

4

2 に答える 2

31

CMTime、およびその他のフィールドを含む構造であるため、浮動小数点値に「キャスト」することはできません。valuetimescale

幸いなことに、変換関数がありますCMTimeGetSeconds()

let cmTime = player.currentTime()
let floatTime = Float(CMTimeGetSeconds(player.currentTime()))

更新: Swift 3 以降 、の型エイリアスであるplayer.currentTimea を返します 。したがって、への変換は次のように単純化されます。TimeIntervalDoubleFloat

let floatTime = Float(player.currentTime)
于 2014-09-17T15:36:10.477 に答える