通过文本字段调用变量名称

我想在Swift中的textfield上显示类值。在我的示例中,我有一个带有两个实例的class,如下所示。然后,我有一个场景,其中有textfieldlabelbutton。在textField上,我要键入实例名称-如“ chevy”,然后单击button,在label上显示实例的属性。

class Auto {
    var make:String
    var model:String
    var color:String

    init(make: String,model: String,color: String){
        self.make = make
        self.model = model
        self.color = color
    }
}

var chevy = Auto(make: "Chevrolet",model: "HHR",color: "Blue")
var prius = Auto(make: "Toyota",model: "Prius",color: "white")

我为实现此目的的尝试已尝试:

var carType: String
carType = txtMyCar.text!
carType = "prius"

lblShow.text = carType.color

这显然行不通。如何通过使用具有实例名称的教科书来显示变量“颜色”?

best0love 回答:通过文本字段调用变量名称

你不能那样做。

您可以做的是制造一系列汽车

let cars = [Auto(make: "Chevrolet",model: "HHR",color: "Blue"),Auto(make: "Toyota",model: "Prius",color: "white")]

,当您键入chev并按按钮时,可以使用

过滤数组。
if let car = cars.first(where: {$0.make.range(of: txtMyCar.text!,options: .caseInsensitive}) != nil {
   lblShow.text = car.color
}
,

您可以将type属性添加到class Auto中,并使用该属性来获取属性值,即

enum CarType: String {
    case chevy,prius
}

class Auto {
    let make:String
    let model:String
    let color:String
    let type: CarType

    init(make: String,model: String,color: String,type: CarType){
        self.make = make
        self.model = model
        self.color = color
        self.type = type
    }
}

您可以像这样使用它

let chevy = Auto(make: "Chevrolet",color: "Blue",type: .chevy)
let prius = Auto(make: "Toyota",color: "white",type: .prius)

接下来,您可以像这样使用CarType textFieldCarType's的文本中获取init(rawValue:)

if let text = txtMyCar.text {
    let carType = CarType(rawValue: text)
    lblShow.text = carType?.color
}
本文链接:https://www.f2er.com/3112701.html

大家都在问