首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斯威夫特:“Int32”不能转换成“Int32”

斯威夫特:“Int32”不能转换成“Int32”
EN

Stack Overflow用户
提问于 2015-03-31 19:54:53
回答 1查看 688关注 0票数 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)

解决了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-31 20:04:06

错误消息确实有点奇怪,但解决方案可能是删除不必要的.value调用:

代码语言:javascript
复制
var value = currentCellSegment.duration.value
var timescale = currentCellSegment.duration.timescale

如果currentCellSegment.duration是一个struct CMTime,那么它的timescale属性就是CMTimeScale --又名Int32,这就是CMTimeMakeWithSeconds()所期望的。

value属性Int32返回一个Builtin.Int32,这将导致奇怪的错误消息。示例:

代码语言:javascript
复制
func abc(x : Int32) {
    println(x)
}
let x = Int32(1)
abc(x)       // OK
abc(x.value) // error: 'Int32' is not convertible to 'Int32'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29377389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档