2017-07-27 31 views
0

有什麼方法可以在使用Swift創建對象時將對象添加到列表中?我認爲你可以通過做來做到這一點,但我不確定如何在Swift中做到這一點。這是我現在的代碼。做列表似乎不工作,因爲列表保持空白。將對象添加到初始化列表

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

我可能是錯的,但是這將導致到[保留週期(http://www.thomashanning.com/retain-cycles-weak-unowned-迅速/)。爲什麼不只是在你的模型之外創建數組呢?這樣你最終會得到一個容器來存儲你的所有對象。 – eshirima

回答

4

您可以嘗試以下保存附加數據,

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

的方法.append(item)是將項目添加到一個數組的好辦法,但在你的情況,你要創建一個保留週期會泄露你的應用程序。

您的變種differentCandles應保存在其他地方或靜態。