2017-08-02 5 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] 

を宣言することはできません。は、アレイ

+0

あなたは汚い修正通りのviewDidLoadに、または他の機能 –

+0

でこれを移動する必要があります(おそらく、これを参照することXY問題)では、 'lekarze'を怠惰なvarにし、' ll'、...、プロパティにアクセスするときに '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

エラーメッセージには、クラスの作成が完了する前に、1つのインスタンス変数が別のインスタンス変数を参照できないことが記述されています。 Lakarzその後structl1l2、およびl3は、コンパイル時に固定されているの値であれば、あなたのケースでは

、。この問題を回避するには、彼らは、インスタンスのメンバーではないよう staticとして l1l2、および l3を宣言することです:

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] 
}