如何解决“表达式类型'@lvalue CGRect / CGSize'在没有更多上下文的情况下是模棱两可的”?

时间:2019-01-31 15:37:28

标签: ios swift swift4.2

我有一个用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中是否为此使用了不同的函数或语法,但似乎无法修复此错误。

1 个答案:

答案 0 :(得分:1)

问题之一是adjustedHeight是一个让步,但是在下一行使用+=运算符对其进行了修改。将adjustedHeight更改为var后,问题是否解决?