Вот минимальный пример, который объясняет мой комментарий:
class AppDelegate: UIResponder, UIApplicationDelegate {
var arrayOfData = [Int]()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
arrayOfData.append(1)
arrayOfData.append(2)
arrayOfData.append(3)
return true
}
Тогда в вашем V C вы можете получить доступ к вашему массиву, получив ссылку на делегат приложения:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Get the data from app delegate
let appDelegate = UIApplication.shared.delegate as? AppDelegate
print(appDelegate?.arrayOfData)
}
}
В вашем указанном c коде вы можете переместить эту строку, где вы создаете источник данных:
let dataSource = DataSource()
, чтобы быть чуть выше того места, где вы объявляете свои модели представления (theViewModels), чтобы вы могли ссылаться на него откуда-то, как я это делал с arrayOfData.
Вы также можете сделать вашу собственность частной и получить к ней доступ через геттер, чтобы придерживаться обычной практики программирования.
Можно найти больше примеров. здесь, хотя принятый ответ предназначен для Objective- C:
Передача данных от делегата приложения в View Controller
Прокрутите вниз, и вы увидите другие способы делайте то, что вам нужно, даже передавая данные назад и вперед между делегатом приложения и другими VC.