Хранение данных в классе - PullRequest
2 голосов
/ 01 мая 2020

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

1 Ответ

3 голосов
/ 02 мая 2020

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

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

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

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

  • Singleton шаблон проектирования : вы можете использовать синглтоны в 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 .

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

...