类中的Helper类实现协议

时间:2018-08-30 09:29:41

标签: swift

我有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)
}

1 个答案:

答案 0 :(得分:0)

尝试惰性

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