我是Swift编程新手,我做了一个简单的项目,它将输出到标签上,但是我得到了错误:
类型'(UITextRange) ->字符串?‘不能符合“BinaryInteger”;只有struct/enum/class类型可以符合协议。
有人能解释一下发生了什么吗?
@IBOutlet weak var lblOutput: UILabel!
@IBOutlet weak var InputAge: UITextField!
@IBOutlet weak var outputAge: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func calcOutput(_ sender: Any) {
var age = Int(InputAge.text) * 8;
lblOutput.text = age;
}包含错误的图像:

发布于 2021-01-17 09:57:23
有三个错误:
您必须解包装nil
text of inputAge,因为UITextField的text属性永远不是inputAge示例"ABC“不能转换为Int,因此Int(...)返回一个可选的,您必须检查UILabel的text属性是否为String的nil
String请用小写字母命名函数和变量,并将不可变变量声明为常量(let)。
@IBOutlet weak var inputAge : UITextField!
@IBAction func calcOutput(_ sender: Any) {
let stringAge = inputAge.text!
if let age = Int(stringAge) {
lblOutput.text = String(age * 8)
} else {
lblOutput.text = "The input string is not convertible to Int"
}
}发布于 2021-01-17 09:39:35
在使用前打开可选文本:
@IBAction func calcOutput(_ sender: Any) {
if let text = validatedField.text,
let age = Int(text) {
lblOutput.text = "\(age * 8)"
}
}不要在行尾使用分号。
如果以后不更新它的值,请使用let。
将文本设置为文本字段(而不是Int)。
https://stackoverflow.com/questions/65759077
复制相似问题