不能在 属性 初始值设定项中使用实例成员 'getA'; 属性 初始值设定项 运行 在 'self' 可用之前

Cannot use instance member 'getA' within property initializer; property initializers run before 'self' is available

Y 这给出了这个错误 - 无法在 属性 初始值设定项中使用实例成员 'getA'; 属性 初始值设定项 运行 在 'self' 可用之前

class A  {

    var asd : String  = getA()

    func getA() -> String {
        return "A"

    }
}

您首先需要初始化您的 asd 变量。然后在 init 中,您可以将函数值应用于它。

class A  {
var asd : String = ""

init() {
    self.asd = self.getA()
}

func getA() -> String {
    return "A"

} }

属性 初始值设定项 运行 在 self 可用之前。

解决方法是lazy initialize 属性:

class A {
    lazy var asd: String  = getA()

    func getA() -> String {
        return "A"
    }
}

这将在您第一次尝试使用它时初始化 属性。