2017-08-02 80 views
-2
let l1 = Lekarz(imie: "Jan", nazwisko: "Kowalski", specjalnosc: "Dermatolog", dzienPracy: DzienPracy(dzien: .PN, godzinaPocz: .osiem, godzinaKon: .dziewiec)) 
let l2 = Lekarz(imie: "Adrian", nazwisko: "Nowakowski", specjalnosc: "Endokrynolog", dzienPracy: DzienPracy(dzien: .WT, godzinaPocz: .jedenascie, godzinaKon: .czternascie)) 
let l3 = Lekarz(imie: "Hubert", nazwisko: "Zieliński", specjalnosc: "Logopeda", dzienPracy: DzienPracy(dzien: .PT, godzinaPocz: .pietnascie, godzinaKon: .szesnascie)) 


let lekarze = [l1, l2, l3] 

“不能使用属性初始化中的实例成员‘L1’;在此之前的‘自我’经营的初始值是可用”。不能声明数组

+0

您应该移动到这个viewDidLoad中或在其他功能 –

+0

作为一个肮脏的修复(指这可能是一个XY问题),你可以让'lekarze'成为一个懒惰的变量,并在访问'l1',...,属性时明确地注释'self'。例如。 'lazy var lekarze:[Lekarz] = [self.l1,self.l2,self.l3]'。 – dfri

+0

请参阅https://stackoverflow.com/questions/25855137/viewcontroller-type-does-not-have-a-member-named或https://stackoverflow.com/questions/25854300/how-to-initialize-properties-即,依赖上,每个 - 其他 –

回答

1

由于错误消息提到,一个实例变量在类完成创建之前无法引用另一个实例变量。

对于你的情况,如果Lakarzstruct那么l1l2l3固定在编译时的值。一种解决方法是申报l1l2l3static,使他们没有实例成员:

class Foo { 
    static let l1 = Lekarz(imie: "Jan", nazwisko: "Kowalski", specjalnosc: "Dermatolog", dzienPracy: DzienPracy(dzien: .PN, godzinaPocz: .osiem, godzinaKon: .dziewiec)) 
    static let l2 = Lekarz(imie: "Adrian", nazwisko: "Nowakowski", specjalnosc: "Endokrynolog", dzienPracy: DzienPracy(dzien: .WT, godzinaPocz: .jedenascie, godzinaKon: .czternascie)) 
    static let l3 = Lekarz(imie: "Hubert", nazwisko: "Zieliński", specjalnosc: "Logopeda", dzienPracy: DzienPracy(dzien: .PT, godzinaPocz: .pietnascie, godzinaKon: .szesnascie)) 


    let lekarze = [Foo.l1, Foo.l2, Foo.l3] 
}