Передача огромного 2d-массива между 2 контроллерами просмотра

#swift #viewcontroller

#swift #viewcontroller

Вопрос:

Обычно я использую segue для передачи некоторых данных между 2 контроллерами просмотра. Но теперь у меня есть 2D-массив (около 40Meg данных, а в будущем он может превысить 100Meg. Это файл .json). Я прочитал несколько статей, в которых рассказывается о разных способах. Но большинство способов (если не все) создадут копию этих данных, а это требует времени (на экране запуска это приемлемо, но не при переключении ViewControllers). Какой метод вы бы порекомендовали? Размещение моего огромного массива в качестве глобального работает нормально, но многие не одобряют это.

Комментарии:

1. Используйте класс-оболочку. Сделайте свой массив свойством класса и передайте этот объект вместо этого. Поскольку объекты передаются по ссылке, это будет быстро.

2. Или, может быть, пересмотрите, действительно ли вам нужно передавать так много данных между вашими контроллерами просмотра.

Ответ №1:

 class ArrayWapper {
    var array: [[Int]] = [[]] // Set your array .
}
  

И отправка экземпляра из этого класса во второй UIViewController
как @vacawama упоминалось с момента создания его класса, он будет передавать ссылку, а не копию значения этого массива.

Таким образом, во втором UIViewController случае у вас была бы переменная типа ArrayWapper class, а не просто [[Int]] array.