我有协议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] = []
}