Я не уверен, почему получаю эту ошибку, потому что мой класс DataSource находится внутри моего класса ViewController.
Это не имеет значения. Объявление одного класса внутри другого просто пространства имен внутреннего класса, то есть он теперь называется AnimalsVC.DataSource
. Это не приводит к тому, что один экземпляр внутреннего класса может магически видеть внутри экземпляра внешний класс (и на самом деле совершенно неясно, о каких случаях мы будем говорить). Ваше вложение объявлений классов бесполезно, поэтому вы можете и не делать этого.
Вместо этого, если DataSource нужно видеть внутри AnimalsV C, делайте то, что вы обычно делаете: присвойте экземпляру DataSource ссылка на экземпляр AnimalsV C:
class AnimalsVC: UIViewController {
var animalsArray = // ...
}
class DataSource: UITableViewDiffableDataSource<Int, Animal> {
weak var vc : AnimalsVC?
// ...
}
Когда вы создаете свой экземпляр DataSource, установите его vc
в self
. Теперь DataSource может обращаться к свойствам экземпляра экземпляра AnimalsV C.
(На самом деле, то, что я делаю в своем собственном коде, это даю моему подклассу UITableViewDiffableDataSource специальный назначенный инициализатор. Таким образом, я могу создавать данные источник и передать ему ссылку на контроллер представления за один ход.)