Xcode 6-SWIFT-将CMTime转换为浮点 var songs=MPMediaQuery() var localSongs=songs.items songList=NSMutableArray(数组:localSongs) tableView.reloadData() var song=MPMediaItem(编码者:歌曲列表[0]作为NSCoder) var currentItem=AVPlayerItem(URL:song.valueForProperty(MPMediaItemPropertyAsetUrl)作为NSURL) player.replaceCurrentItemWithPlayerItem(当前项) player.play() var songTitle:AnyObject!=song.valueForProperty(MPMediaItemPropertyTitle) songName.text=歌曲标题为?一串 sliderOutlet.value=Float(player.currentTime())/

Xcode 6-SWIFT-将CMTime转换为浮点 var songs=MPMediaQuery() var localSongs=songs.items songList=NSMutableArray(数组:localSongs) tableView.reloadData() var song=MPMediaItem(编码者:歌曲列表[0]作为NSCoder) var currentItem=AVPlayerItem(URL:song.valueForProperty(MPMediaItemPropertyAsetUrl)作为NSURL) player.replaceCurrentItemWithPlayerItem(当前项) player.play() var songTitle:AnyObject!=song.valueForProperty(MPMediaItemPropertyTitle) songName.text=歌曲标题为?一串 sliderOutlet.value=Float(player.currentTime())/,swift,uislider,cmtime,Swift,Uislider,Cmtime,CMTime是一种结构,包含值、时间刻度和其他字段, 因此,不能将其“强制转换”为浮点值 幸运的是,有一个转换函数CMTimeGetSeconds(): 更新:从Swift 3开始,player.currentTime返回 TimeInterval,它是Double的类型别名。 因此,到Float的转换简化为 let cmTime = player.currentTime() let floatTime = Float(CMTimeGetSeconds(player.currentTime()

CMTime
是一种结构,包含
时间刻度
和其他字段, 因此,不能将其“强制转换”为浮点值

幸运的是,有一个转换函数
CMTimeGetSeconds()


更新:从Swift 3开始,
player.currentTime
返回
TimeInterval
,它是
Double
的类型别名。 因此,到
Float
的转换简化为

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

CMTime是一个结构,包含值、时间刻度、标志和历元。因此,不能将其“强制转换”为浮点值

您可以通过直接写入来使用该值

let floatTime = Float(player.currentTime)
但这只会给出播放器的值,以毫秒为单位。要以秒为单位获取值,请使用以下命令:

sliderOutlet.value = Float(player.currentTime().value)

请注意,这也可能不是正确的方式,你应该有你的滑块的价值。

是的,这是工作,谢谢你@Martin PS:有没有一个提示,让我自己在未来计算这些东西?(当然,除了在这里问:)我试着阅读CMTime引用,但没有弄明白。@Abdou023:嗯,
CMTimeGetSeconds()
在中有记录。您还可以单击Swift源文件中的类型或方法(例如,在CMTime上),这将引导您找到Swift定义,然后在其中找到相关方法。
sliderOutlet.value = Float(player.currentTime().value)
sliderOutlet.value = Float(CMTimeGetSeconds(player.currentTime()))