首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我得到错误"Type“(UITextRange) -> String?‘不能符合'BinaryInteger';只有struct/enum/class类型才能符合协议”

我得到错误"Type“(UITextRange) -> String?‘不能符合'BinaryInteger';只有struct/enum/class类型才能符合协议”
EN

Stack Overflow用户
提问于 2021-01-17 09:30:53
回答 2查看 2.7K关注 0票数 0

我是Swift编程新手,我做了一个简单的项目,它将输出到标签上,但是我得到了错误:

类型'(UITextRange) ->字符串?‘不能符合“BinaryInteger”;只有struct/enum/class类型可以符合协议。

有人能解释一下发生了什么吗?

代码语言:javascript
复制
@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;
}

包含错误的图像:

EN

回答 2

Stack Overflow用户

发布于 2021-01-17 09:57:23

有三个错误:

您必须解包装nil

  • For的text of inputAge,因为UITextField的text属性永远不是inputAge示例"ABC“不能转换为Int,因此Int(...)返回一个可选的,您必须检查UILabeltext属性是否为Stringnil

  • The类型。您必须将乘法的结果转换回String

请用小写字母命名函数和变量,并将不可变变量声明为常量(let)。

代码语言:javascript
复制
    @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"
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2021-01-17 09:39:35

在使用前打开可选文本:

代码语言:javascript
复制
@IBAction func calcOutput(_ sender: Any) {
    if let text = validatedField.text,
       let age = Int(text) {
        lblOutput.text = "\(age * 8)"
    }
}

不要在行尾使用分号。

如果以后不更新它的值,请使用let。

将文本设置为文本字段(而不是Int)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65759077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档