Swift 无法调用类方法,不可用

Swift 无法调用类方法,不可用,swift,Swift,几天前我刚开始学习如何编写代码, 所以基本上我创建了一个类车,里面有属性和函数, 我想做的是从textfields中获取数据并应用类函数 // Class } class Car{ var carModelCountries: Dictionary <String, String> var carYear: Int var carEngine: Double var Carmodel: String init(carModel: Strin

几天前我刚开始学习如何编写代码, 所以基本上我创建了一个类车,里面有属性和函数, 我想做的是从textfields中获取数据并应用类函数

// Class
}

class Car{
    var carModelCountries: Dictionary <String, String>
    var carYear: Int
    var carEngine: Double
    var Carmodel: String

    init(carModel: String, carYear: Int, carEngine: Double) {
        self.carYear = carYear
        self.carModelCountries = [ "Kia": "Korean",
                          "Mercedes": "Germany",
                          "Chevy": "USA",
                          "Audi": "Germany",
                          "Bentley": "Great Britain"]
        self.carEngine = carEngine
        self.Carmodel = carModel


        func getCarCountry(carModel: String) ->String{
            for (value, key) in self.carModelCountries {
                if key == self.Carmodel{
                    return value
                }
            }

            return "Origin Unknown"

        }

        func getCarAge(carYear: Int) -> String{
            if self.carYear <= 2016{
                return "Car is old"
            }
            return "Car is Brand New"
        }

        func getCarFuelConsumption(forEngine: Double) -> String {
            if self.carEngine >= 3.0 {
                return "Consumes a lot"

            }
            return "Almost Nothing"
        }


    }
    }

// labels  @IBOutlet weak var resultsLabel: UILabel!
    @IBOutlet weak var carModelLabel: UITextField!

    @IBOutlet weak var carYearLabel: UITextField!
    @IBOutlet weak var carEngineLabel: UITextField!

// here I'm trying to initialize the class inside button function and then assign results to result Label
 //button pressed
    @IBAction func getInfoButton(_ sender: Any) {

         var car = Car.init(carModel: carModelLabel.text!, carYear: Int(carYearLabel.text!)!, carEngine: Double(carEngineLabel.text!)!)

        resultsLabel.text = car.getCarAge

    }
我得到类型为“Car”的错误值没有成员“getCarAge”

您已将getCarAge放置在init方法中。

使getCarAge和所有其他方法实例方法将它们移出init。。。{...}. 否则,它们仅在init范围内可见。此外,您还可以删除方法的参数,因为您使用的是类的属性

class Car {

    ...

    init(...) {...}

    func getCarAge() -> String {
        if self.carYear <= 2016 {
            return "Car is old"
        }
        return "Car is Brand New"
    }

    ...

}
或者,您可以将getCarAge属性设置为counted属性

init(...) {...}

var carAge: String {
    if carYear <= 2016 {
        return "Car is old"
    }
    return "Car is Brand New"
}

另外,它被称为without,它有一个未被使用的参数。非常感谢@我很高兴我帮助了,考虑接受答案。
init(...) {...}

var carAge: String {
    if carYear <= 2016 {
        return "Car is old"
    }
    return "Car is Brand New"
}
resultsLabel.text = car.carAge