如何修复“表达式类型'@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'在没有更多上下文的情况下模棱两可”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复drv?

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞