0

我正在使用Swift 1.1xCode 6.1.1

尝试从值和时间刻度中提取秒数时收到以下错误

PATH/ViewControllers/Camera/CaptureScreenViewController.swift:41:58: 'Int32' is not convertible to 'Int32'

在下一行

var seconds = CMTimeMakeWithSeconds(Float64(value),timescale)

,timescale)

下面是几行供参考

var currentCellSegment = segmentForIndexPath(indexPath) var value = currentCellSegment.duration.value.value var timescale = currentCellSegment.duration.timescale.value var seconds = CMTimeMakeWithSeconds(Float64(value),timescale)

有关如何修复的任何建议?或者回答为什么会这样?

我尝试过的事情

我已经卸载了 xCode,重新启动并重新安装。

我已经尝试过这样timescale as Int32

var timescale = currentCellSegment.duration.timescale.value as Int32

var timescale: Int32 = currentCellSegment.duration.timescale.value

var timescale: Int32 = currentCellSegment.duration.timescale.value as Int32

,但我收到在线错误var timescale...

正如@martin-r所建议的那样

新的参考代码

var currentCellSegment = segmentForIndexPath(indexPath) var value = currentCellSegment.duration.value var timescale = currentCellSegment.duration.timescale var seconds = CMTimeMakeWithSeconds(Float64(value),timescale)

解决了

4

1 回答 1

0

错误信息确实有点奇怪,但解决办法大概是去掉不必要的.value调用:

var value = currentCellSegment.duration.value
var timescale = currentCellSegment.duration.timescale

如果currentCellSegment.duration是 astruct CMTime那么它的 timescale属性是 a CMTimeScaleaka Int32,这就是CMTimeMakeWithSeconds()预期的。


value属性Int32返回 a Builtin.Int32,这会导致奇怪的错误消息。例子:

func abc(x : Int32) {
    println(x)
}
let x = Int32(1)
abc(x)       // OK
abc(x.value) // error: 'Int32' is not convertible to 'Int32'
于 2015-03-31T20:04:06.800 回答