二元运算符“==”不能应用于 'UILabel?' 和 'String' 类型的操作数
Binary operator '==' cannot be applied to operands of type 'UILabel?' and 'String'
错误:二元运算符“==”不能应用于 'UILabel?' 和 'String'
类型的操作数
import UIKit
class ViewController: UIViewController {
let Soft = 5
let Medium = 8
let Hard = 12
@IBAction func hardnessSelected(_ sender: UIButton) {
let hardness = sender.titleLabel
if hardness == "Soft"{
print(Soft)
}
else if hardness == "Medium"{
print (Medium)
}
else {
print (Hard)
}
}
}
我该如何解决这个错误?
UIButton.titleLabel is a UILabel
and it stores its text in UILabel.text
属性:
let hardness = sender.titleLabel.text
在UIButton
的情况下你也可以访问UIButton.currentTitle
属性:
let hardness = sender.currentTitle
您正在尝试比较两种不同的类型。要获取 UILabel 的实际文本,您需要 hardness.text
.
UIButton
通过管理其文本绘图的 UILabel
公开其标签。从而改变:
let hardness = sender.titleLabel
到
let hardness = sender.titleLabel.text
UIKit
文档说:
UIButton
var titleLabel: UILabel?
A view that displays the value of the currentTitle property for a button.
和:
UILabel
var text: String?
The current text that is displayed by the label.
还有一个更直接的方法使用currentTitle
:
UIButton
var currentTitle: String?
The current title that is displayed on the button.
因此:
let hardness = sender.currentTitle
也可以。
你没有给出错误所在的行号,但查看它提到操作 ==
的文本,所以我猜它是其中之一:
if hardness == "Soft"{
else if hardness == "Medium"{
"Soft"和"Medium"是弦,所以硬度必须是'UILabel?
。这些类型不能相互比较。您一定想在按钮上显示文本?查看 UILabel docs,有一个 text
属性,所以您可能想更改此行以获取表示按钮文本的字符串:
let hardness = sender.titleLabel.text
您使用的是动态按钮吗?将发件人与您正在检查的按钮进行比较会更不容易出错。将硬编码字符串与按钮文本进行比较可能会导致 运行 次错误。也许您没有正确区分大小写、拼写错误的文本,或者决定稍后进行本地化,因此不同语言的文本可能会有所不同。这些错误不会在编译时被捕获。
错误:二元运算符“==”不能应用于 'UILabel?' 和 'String'
类型的操作数
import UIKit
class ViewController: UIViewController {
let Soft = 5
let Medium = 8
let Hard = 12
@IBAction func hardnessSelected(_ sender: UIButton) {
let hardness = sender.titleLabel
if hardness == "Soft"{
print(Soft)
}
else if hardness == "Medium"{
print (Medium)
}
else {
print (Hard)
}
}
}
我该如何解决这个错误?
UIButton.titleLabel is a UILabel
and it stores its text in UILabel.text
属性:
let hardness = sender.titleLabel.text
在UIButton
的情况下你也可以访问UIButton.currentTitle
属性:
let hardness = sender.currentTitle
您正在尝试比较两种不同的类型。要获取 UILabel 的实际文本,您需要 hardness.text
.
UIButton
通过管理其文本绘图的 UILabel
公开其标签。从而改变:
let hardness = sender.titleLabel
到
let hardness = sender.titleLabel.text
UIKit
文档说:
UIButton
var titleLabel: UILabel?
A view that displays the value of the currentTitle property for a button.
和:
UILabel
var text: String?
The current text that is displayed by the label.
还有一个更直接的方法使用currentTitle
:
UIButton
var currentTitle: String?
The current title that is displayed on the button.
因此:
let hardness = sender.currentTitle
也可以。
你没有给出错误所在的行号,但查看它提到操作 ==
的文本,所以我猜它是其中之一:
if hardness == "Soft"{
else if hardness == "Medium"{
"Soft"和"Medium"是弦,所以硬度必须是'UILabel?
。这些类型不能相互比较。您一定想在按钮上显示文本?查看 UILabel docs,有一个 text
属性,所以您可能想更改此行以获取表示按钮文本的字符串:
let hardness = sender.titleLabel.text
您使用的是动态按钮吗?将发件人与您正在检查的按钮进行比较会更不容易出错。将硬编码字符串与按钮文本进行比较可能会导致 运行 次错误。也许您没有正确区分大小写、拼写错误的文本,或者决定稍后进行本地化,因此不同语言的文本可能会有所不同。这些错误不会在编译时被捕获。