【问题标题】:Error: Expression pattern of type 'CountableClosedRange<Int>' cannot match values of type 'UITextField!'错误:“CountableClosedRange<Int>”类型的表达式模式无法匹配“UITextField!”类型的值
【发布时间】:2018-03-08 05:11:54
【问题描述】:

当我在 Swift 中构建和运行此代码时,我收到了上述错误。我正在尝试使用户可以输入一个数字,并且 switch 语句将返回与该数字相对应的以下打印。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var numberInput: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func inputText(_ sender: Any) {

        switch numberInput {

        case 0 ... 50:
            print("Number is between 0 & 50")
        case 51 ... 100:
            print("Number is between 51 & 100")
        case 101 ... 150:
            print("Number is between 101 & 150")
        default:
            print("Fallback option")
        }
    }
}

【问题讨论】:

    标签: swift switch-statement uitextfield case


    【解决方案1】:

    您必须从 textField 中获取 Text,它是 String 类型,而不是数字。您必须先将其转换为数字,然后在使用整数范围的 switch 语句中使用它。

    guard let text = numberInput?.text,let number = Int(text) else { return }
    switch number {
    
        case 0 ... 50:
            print("Number is between 0 & 50")
        case 51 ... 100:
            print("Number is between 51 & 100")
        case 101 ... 150:
            print("Number is between 101 & 150")
        default:
            print("Fallback option")
        }
    

    【讨论】:

    • 问题更基本。 OP 的代码正在尝试打开 UITextField 的实例,甚至不是 String。
    猜你喜欢
    • 1970-01-01
    • 2017-11-22
    • 2016-03-02
    • 1970-01-01
    • 2018-07-15
    • 2019-04-06
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    相关资源
    最近更新 更多