Вспомогательный класс в классах реализует протокол - PullRequest
0 голосов
/ 30 августа 2018

У меня есть протокол 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 голосов
/ 30 августа 2018

Попробуйте с Ленивый :

class SalesChartData: ChartData {
     lazy var dataHelper: DataHelper = DataHelper(data: self)
     var chartValues: [ChartValues] = []
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...