如何修复“表达式类型'@lvalue CGRect/CGSize'在没有更多上下文的情况下模棱两可”?
Posted
技术标签:
【中文标题】如何修复“表达式类型\'@lvalue CGRect/CGSize\'在没有更多上下文的情况下模棱两可”?【英文标题】:How to fix "Expression type '@lvalue CGRect/CGSize' is ambiguous without more context"?如何修复“表达式类型'@lvalue CGRect/CGSize'在没有更多上下文的情况下模棱两可”? 【发布时间】:2019-01-31 15:37:28 【问题描述】:我有一个用 Swift 3 和 Xcode 9 编写的现有代码库,由于代码中的构建错误,我无法迁移到 Xcode 10 和 Swift 4.2。
我现在遇到的问题是这样的:
“表达式类型 '@lvalue CGRect' 在没有更多上下文的情况下是模棱两可的”
我在代码的 3 个不同区域收到此错误。第四个是相关的,但不同的是它说:
“表达式类型 '(CGSize) -> CGSize' 在没有更多上下文的情况下是模棱两可的”
我已尝试更改表达式中的所有值以显式使用数据类型 CGFloat 来删除任何推断的数据类型错误,但这仍然没有解决问题。
override func sizeThatFits(_ size: CGSize) -> CGSize
let adjustedHeight = 8.0 + titleLabel.frame.height + 2.0 + underlineView.frame.height
adjustedHeight += 16.0 + mapImageView.frame.height + 16.0
return CGSize(width: bounds.width, height: adjustedHeight)
override func sizeThatFits(_ size: CGSize) -> CGSize
let adjustedHeight = 10.0 + titleLabel.frame.height + 15.0 + daysRoundedView.frame.height
adjustedHeight += daysTextLabel.frame.height + 10.0 + logoImageView.frame.height + 20.0
return CGSize(width: size.width, height: adjustedHeight)
override func sizeThatFits(_ size: CGSize) -> CGSize
let adjustedHeight = 8.0 + titleLabel.frame.height + 2.0
adjustedHeight += underlineView.frame.height + 16.0 + flyerImageView.frame.height + 16.0
return CGSize(width: bounds.width, height: adjustedHeight)
override func sizeThatFits(_ size: CGSize) -> CGSize
let adjustedHeight = 8.0 + titleLabel.frame.height + 2.0 + underlineView.frame.height + 16.0
adjustedHeight += descriptionTextView.sizeThatFits(CGSize(width: size.width - 40, height: size.height)).height + 16.0
return CGSize(width: bounds.width, height: adjustedHeight)
问题出在adjustedHeight 变量上。我不确定 Swift 4.2 中是否为此使用了不同的函数或语法,但我似乎无法修复此错误。
【问题讨论】:
将let
更改为 var
【参考方案1】:
其中一个问题是 adjustedHeight
是一个 let,但它正在下一行中使用 +=
运算符进行修改。将 adjustedHeight
更改为 var 后问题是否得到解决?
【讨论】:
以上是关于如何修复“表达式类型'@lvalue CGRect/CGSize'在没有更多上下文的情况下模棱两可”?的主要内容,如果未能解决你的问题,请参考以下文章