Swift 如何修复';表达式类型';CGSize';在没有更多上下文的情况下是不明确的';斯威夫特?

Swift 如何修复';表达式类型';CGSize';在没有更多上下文的情况下是不明确的';斯威夫特?,swift,cgsize,Swift,Cgsize,这是我的代码: @IBOutlet weak var imageScroll: UIScrollView! ... imageScroll.contentSize = CGSize(width: imageScroll.visibleSize.width * 5, height: imageScroll.visibleSize.height) 没关系 如果我将其更改如下: let ct = 5 imageScroll.contentSize = CGSize(width: imageScro

这是我的代码:

@IBOutlet weak var imageScroll: UIScrollView!
...
imageScroll.contentSize = CGSize(width: imageScroll.visibleSize.width * 5, height: imageScroll.visibleSize.height)
没关系

如果我将其更改如下:

let ct = 5

imageScroll.contentSize = CGSize(width: imageScroll.visibleSize.width * ct, height: imageScroll.visibleSize.height)
它提示一个错误:表达式类型“CGSize”不明确,没有更多上下文

当我发布问题时,stackoverflow会提示我类似的问题:

我将let改为var,错误是相同的


有什么帮助吗?谢谢。

问题是因为
ct=5
被推断为类型
int

imageScroll.visibleSize.height
height属性是一个
CGFloat

它们必须是相同的类型,所以如果您将代码更改为该类型,它应该可以工作

let ct: CGFloat = 5

问题是因为
ct=5
被推断为类型
int

imageScroll.visibleSize.height
height属性是一个
CGFloat

它们必须是相同的类型,所以如果您将代码更改为该类型,它应该可以工作

let ct: CGFloat = 5

这个答案并不能完全解释这个错误。出现错误的原因是,
CGSize
具有采用
Int
Double
CGFloat
的初始值设定项。由于
ct
Int
imageScroll.visibleSize.height
CGFloat
,编译器无法假设
*
运算符的结果是
Int
还是
CGFloat
,因此无法决定使用哪个
CGSize
初始值设定项。感谢rmaddy,我认为这是暗示(我确实添加了可能的初始值设定者,但后来决定反对)。谢谢你的澄清。这个答案并不能完全解释错误。出现错误的原因是,
CGSize
具有采用
Int
Double
CGFloat
的初始值设定项。由于
ct
Int
imageScroll.visibleSize.height
CGFloat
,编译器无法假设
*
运算符的结果是
Int
还是
CGFloat
,因此无法决定使用哪个
CGSize
初始值设定项。感谢rmaddy,我认为这是暗示(我确实添加了可能的初始值设定者,但后来决定反对)。谢谢你的澄清