如何修复 "Expression type '@lvalue CGRect/CGSize' is ambiguous without more context"?
How to fix "Expression type '@lvalue CGRect/CGSize' is ambiguous without more context"?
我有一个用 Swift 3 和 Xcode 9 编写的现有代码库,由于构建,我无法迁移到 Xcode 10 和 Swift 4.2代码中的错误。
我现在 运行 遇到的问题是:
"Expression type '@lvalue CGRect' is ambiguous without more context"
我在代码的 3 个不同区域遇到此错误。第四个相关但不同的是它说:
"Expression type '(CGSize) -> CGSize' is ambiguous without more context"
我已经尝试更改表达式中的所有值以显式使用数据类型 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 中是否为此使用了不同的函数或语法,但我似乎无法修复此错误。
其中一个问题是 adjustedHeight
是一个 let,但它在下一行中用 +=
运算符进行了修改。将 adjustedHeight
更改为 var 后问题是否得到解决?
我有一个用 Swift 3 和 Xcode 9 编写的现有代码库,由于构建,我无法迁移到 Xcode 10 和 Swift 4.2代码中的错误。
我现在 运行 遇到的问题是:
"Expression type '@lvalue CGRect' is ambiguous without more context"
我在代码的 3 个不同区域遇到此错误。第四个相关但不同的是它说:
"Expression type '(CGSize) -> CGSize' is ambiguous without more context"
我已经尝试更改表达式中的所有值以显式使用数据类型 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 中是否为此使用了不同的函数或语法,但我似乎无法修复此错误。
其中一个问题是 adjustedHeight
是一个 let,但它在下一行中用 +=
运算符进行了修改。将 adjustedHeight
更改为 var 后问题是否得到解决?