2017-07-27 30 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应保存在其他地方或静态。