Хранение данных в классе

Поэтому в настоящее время я работаю над своим первым большим проектом, и мне было интересно, есть ли способ поместить данные в один класс, а затем просто переписать их или создать экземпляр для класса. У меня есть данные, которые загружаются в первый ViewController, и если я хочу использовать их на всех своих 5 ViewController, я просто передаю их с помощью делегатов и делаю много дубликатов. Поскольку этот способ очень неэффективен и к тому же беспорядок, я хотел бы хранить их в одном классе. Когда я создал собственный класс для этих данных, при переходе на другой ViewController данные мгновенно удаляются. Любой совет будет оценен по достоинству!:)

1 ответ

Решение

У вас есть несколько вариантов доступа к одному и тому же фрагменту данных из разных мест. Способ использования полностью зависит от ваших потребностей. Вот несколько вариантов:

  • Внедрение зависимости: вот хороший пост об этом. Это наличие некоторых данных в одном виртуальном канале и их внедрение в следующий. Это хороший подход, если вам не нужно сохранять данные и другие объекты, от которых зависят.

  • Делегирование: вы можете заставить виртуальный канал передавать данные своему делегату после того, как что-то произойдет (например, пользовательское нажатие, вы завершили загрузку некоторых данных и т. Д.).

  • Центр уведомлений: вы можете отправить уведомление в рамках приложения и сделать любой объект (например, ViewController) для наблюдения за конкретными уведомлениями. Вы можете отправлять данные вместе с уведомлениями.

  • Шаблон проектирования синглтонов: вы можете использовать синглтоны в Swift следующим образом:

class MySingleton {
  static let shared = MySingleton()

  var name = ""
}

// Assign name variable somewhere (i.e. in your first VC after downloading data)
MySingleton.shared.name = "Bob"

// In some other ViewController
myLabel.text = MySingleton.shared.name
  • UserDefaults: это хранилище, которое вы можете использовать для хранения небольших фрагментов данных. Имейте в виду, что это не база данных, она будет сохранять ваши данные между запусками приложения, но вы не должны использовать ее для хранения больших объемов данных.

  • CoreData: это постоянный фреймворк для iOS для хранения данных, как если бы вы это делали в серверной БД. Это не совсем БД, потому что вы не обращаетесь к диску напрямую каждый раз, когда вы читаете / записываете, CoreData загружает все его содержимое в память для доступа к нему. У вас есть другие сторонние библиотеки для работы с локальным постоянством, например Realm.

Надеюсь, это поможет!

Другие вопросы по тегам