2017-07-27 3 views
0

Gibt es eine Möglichkeit, ein Objekt zu einer Liste hinzuzufügen, wenn es mit Swift erstellt wird? Ich denke, Sie können dies mit Java tun, indem Sie tun, aber ich bin nicht sicher, wie es in Swift zu tun ist. Dies ist der Code, den ich gerade habe. Das Append scheint nicht zu funktionieren, da die Liste leer bleibt.Objekt zur Initialisierung hinzufügen

public struct Candle { 
    let id: Int 
    let name: String 
    let burning: Bool 
    let type: CandleType 

    var differentCandles: [Candle] = [] 

    init(name: String, burning: Bool, candleType: CandleType) { 
     self.name = name 
     self.burning = burning 
     self.type = candleType 
     self.id = differentCandles.count + 1 
     differentCandles.append(self) 
    } 
} 
+0

Ich könnte falsch sein, aber dies führt in [Haltezyklen] (http://www.thomashanning.com/retain-cycles-weak-unowned- schnell/). Warum nicht einfach das Array außerhalb des Modells erstellen? Auf diese Weise haben Sie tatsächlich einen einzigen Container zum Speichern aller Ihrer Objekte. – eshirima

Antwort

4

Sie können versuchen, folgende beigefügte Daten zu speichern,

public struct Candle { 
    let id: Int 
    let name: String 
    let burning: Bool 
    let type: CandleType 

    static var differentCandles: [Candle] = [] 

    init(name: String, burning: Bool, candleType: CandleType) { 
     self.name = name 
     self.burning = burning 
     self.type = candleType 
     self.id = Candle.differentCandles.count + 1 
     Candle.differentCandles.append(self) 
    } 
} 
2

Das Verfahren .append(item) ist die gute Möglichkeit, ein Element zu einem Array hinzufügen, aber in Ihrem Fall sind Sie einen Zyklus zu schaffen behalten, die Ihre Anwendung undicht wird.

Ihre var differentCandles sollte irgendwo anders gespeichert werden oder statisch sein.

Verwandte Themen