我有协议ChartData

protocol ChartData {
    var dataHelper: DataHelper { get set }
    var chartValues: [ChartValues] { get set }
}


和类实现该协议

class SalesChartData: ChartData {
     var dataHelper: DataHelper
     var chartValues: [ChartValues] = []

     init() {
         dataHelper = DataHelper(data: ??? how to pass SalesChartData here ???)
     }
}


和辅助类:

class DataHelper {

    var data: ChartData

    init(data: ChartData) {
        self.data = data
    }

    // use ChartData data.chartValues for example...
}


问题是如何将SalesChartData传递给DataHelper(通过'self'不起作用)?我需要在实现DataHelper协议的每个类中访问ChartData。我做错了吗?应该如何构造?我想过滤等在chartValues中传递的数据DataHelper。欣赏任何想法

//编辑:

我做了这样的事情,但是这种结构并不优雅。如何改善呢?

init() {
    dataHelper = DataHelper()
    dataHelper.setData(data: self)
}

最佳答案

尝试懒惰:

class SalesChartData: ChartData {
     lazy var dataHelper: DataHelper = DataHelper(data: self)
     var chartValues: [ChartValues] = []
}

10-07 23:12