У меня есть ViewController с UITableView. Поскольку я хотел разделить обработку данных, я создал собственный класс, который отвечает UITableViewDataSource.Передача информации из UITableViewDataSource в ViewController
Этот класс должен сначала получить данные из CoreData, а затем из REST API.
Каким образом DataSource может обратиться к ViewController, чтобы сообщить ему, чтобы вызвать reloadData в TableView? Какая у вас лучшая практика?
Я думал:
- Кво данным DataSource и когда изменение массива вызов
reloadData
- Вручая блока (с
[self.table reloadData]
) к DataSource, который запускается на выполнение каждый раз, когда данные изменения в DataSource - Сделать свойство таблицы общедоступным на ViewController, чтобы DataSource мог вызвать
reloadData
(что мне не очень нравится как идея) - Имейте свойство на DataSource, который содержит ViewController с таблицей для использования в качестве делегата (который звучит для меня как петля)
Есть ли какие-нибудь умные способы сделать это? Или даже обычная практика, как это решить?
Update:
Я меньше заинтересован в коде, как сделать реализовать определенный шаблон проектирования. Меня больше интересуют рассуждения о том, почему выбрать один шаблон над другим.
Если вы хотите сохранить код, связанный с Разделить данные, почему бы не создать категорию на контроллере представления говорят 'MyTableVC + DataSource' или что-то еще? Будет ли это работать? Или вы действительно хотите, чтобы другой класс был источником данных? – GoodSp33d
@ GoodSp33d, который не работает для меня, так как я хочу подключить разные источники данных к VC для получения разных данных из другого запроса данных о конечных точках/ядрах. – hashier
Хорошо, вы хотите повторно использовать свой VC. Затем вы, как и другие, предложили создать интерфейс (протокол) и вызвать эти методы в источнике данных обычной таблицы. Другие классы могут реализовать эти методы в протоколе, чтобы предоставить данные VC – GoodSp33d