Общая переменная между двумя вкладками для Xcode

У меня есть два контроллера представления, над которыми я работаю, и наследует их от контроллера представления Base

  1. класс A_ViewController: BaseViewController
  2. класс B_ViewController: BaseViewController

Оба этих VC сильно взаимодействуют с моей базой данных firebase. Поэтому я хочу, чтобы переменная отслеживала все загруженные элементы, чтобы эти два VC могли получить к ней доступ без повторной загрузки файла.

Я попытался поместить имя переменной в BaseViewController для двух классов A, B для доступа

var allPostsDownloaded: [Post]! 

Поэтому, прежде чем A_VC загружает любые данные, он проверяет эту переменную allPostsDownloaded и загружает ее, если данные существуют. Если он не существует, я добавляю к этой переменной. Поэтому при переключении на B_VC можно сделать то же самое, и никакие данные не будут повторно загружаться, если это не требуется.

Причина, по которой я не использую segue или protocal для передачи данных, состоит в том, что два VC взаимодействуют довольно сильно с моей базой данных. Таким образом, было намного проще попробовать и получить муравьиные данные, чтобы отслеживать, где это происходит.

Однако проблема в том, что i

 var allPostsDownloaded: [Post]! 

вызывается каждый раз, когда я переключаюсь между A и B VC (которые являются вкладками). Это приведет к тому, что переменная будет пустой и деинициализирована.

Думаю, я мог бы использовать глобальную переменную, но это не хорошая практика? Может ли кто-нибудь объяснить, почему он переименовывается, когда появляется новая вкладка? И лучшее решение для этого.

2 Solutions collect form web for “Общая переменная между двумя вкладками для Xcode”

поскольку @avi упоминает о создании нового одноэлементного класса, то вы можете легко и легко пройти и прочитать. Ниже приведен пример

 class PersistentData { static let sharedInstance = PersistentData() // your global persistent variable var allPostsDownloaded = [Post]() } 

Поэтому в ваших контроллерах вы можете просто прочитать и установить как показано ниже

 // read print(PersistentData.sharedInstance.allPostsDownloaded) // set new data. this just example, hence depends on your case PersistentData.sharedInstance.allPostsDownloaded.append(newPost) PersistentData.sharedInstance.allPostsDownloaded = posts 

также имейте в виду, что если вы хотите читать новое значение при переключении между вкладками, вы можете получить обновление в viewDidAppear или viewWillAppear

Вы можете создать класс Singleton с переменной экземпляра и сохранить все загруженные данные и получить доступ к переменной класса singleton из любого класса классов вашего проекта.

  • После каждого запуска Xcode 6 переименовывает каталог моего приложения в iOS8-симуляторе.
  • Binary Rejection - Недействительная поддержка Watchkit
  • Multipeer Возможности подключения и данные для отправки по пути
  • iOS - как изменить каталог документов
  • Нет быстрых настроек в проекте XCode 5
  • Uicollectionview шахматная сетка
  • XCode: Исключение. Как определить причину?
  • XCode 4.2 почему я вижу @interface как внутри .h, так и .m файлов
  • Создайте вырез UIImage
  • Ошибка добавления объектов в PFRelation, как это делается?
  • XCTests являются flaky при запуске через командную строку или через jenkins
  • Interesting Posts

    Правильное преобразование для масштабирования UIView из прямоугольника?

    Универсальная пользовательская инфраструктура iOS с использованием Xcode 6.4

    Невозможно перетащить элемент из раскадровки в viewcontroller в xcode

    Использование TestFlight для распространения корпоративного приложения Enterprise

    Как создать запрос профиля разработки разработчика на учетной записи предприятия iOS?

    iphone снова запрашивает разрешение на текущее местоположение

    Изменять цвет текста заполнителя UITextField

    Iphone Facebook IOS Загрузка изображений, занимающих слишком много времени?

    Цена покупок в приложении, показанных на экране (с валютой)

    iOS: приложение с несколькими запросами

    Как подавить выноску «Текущее местоположение» в виде карты

    SFTP с использованием NSURLSession не работает

    UITextView Добавление новой строки при первом ответе

    Как удалить ключ из nsmutabledictionary Когда значение этого ключа пуста или null в ios?

    Как отключить множественное касание UICollectionView

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.