Ios 继承初始化类中的Swift错误

Ios 继承初始化类中的Swift错误,ios,swift,class,inheritance,Ios,Swift,Class,Inheritance,我不想初始化我的B对象时出错 我的错误是:在super.init初始化self之前在属性访问“name”中使用“self” class A { let name = "myName"; } class B:A { let point: ObjectWithName; init() { self.point = ObjectWithName(name); // error here super.init(); } } 谢谢你的帮

我不想初始化我的B对象时出错

我的错误是:
在super.init初始化self之前在属性访问“name”中使用“self”

class A {
    let name = "myName";
}

class B:A {
    let point: ObjectWithName;

    init() {
        self.point = ObjectWithName(name); // error here
        super.init();
    }
}

谢谢你的帮助

问题是您正在访问超类中声明的
name
。但超类尚未初始化(它将在
super.init()
之后初始化)

所以这是一个逻辑问题

解决方案#1 您可以将
声明为
惰性
,这样它将在整个
init
过程完成后执行,除非您之前调用它

struct ObjectWithName {
    let name: String
}

class A {
    let name = "myName";
}

class B: A {
    lazy var point: ObjectWithName = { ObjectWithName(name:self.name) }()
}
解决方案#2 在
A
中,您可以将
名称
定义为
静态

class A {
    static let name = "myName";
}

class B:A {
    let point: ObjectWithName;

    override init() {
        self.point = ObjectWithName(name: B.name)
        super.init();
    }
}