Как правильно загрузить viewDidLoad асинхронно после чтения Firebase? - PullRequest
0 голосов
/ 15 апреля 2020

Я работаю над созданием моего первого приложения. Для базовых функций c у меня есть Google Cloud Firestore, в котором размещены некоторые цитаты. Когда пользователь открывает приложение, я хочу получить «цитату дня» и показать ее для них. Я пытаюсь выяснить, как лучше всего это реализовать. В настоящее время мой viewDidLoad () вызывает функцию, которая захватывает цитату, а затем обновляет текстовое поле. Однако, поскольку вызов Firestore является асинхронным, текстовое поле не обновляется до завершения загрузки пользовательского интерфейса. Как бы я лучше всего достиг этой функциональности basi c? Я знаю, что чтение Firestore работает, потому что я добавил временную функцию для обновления текстового поля, когда пользователь касается экрана, и оно работает правильно. Должен ли я использовать отдельную функцию или элемент пользовательского интерфейса (возможно, ViewController?) Для обновления текстового поля вместо ViewDidLoad ()? Или есть хороший способ отредактировать viewDidLoad (), чтобы обновить текстовое поле после загрузки цитаты из Firestore.

var todaysQuote = DailyQuote()

override func viewDidLoad() {
    // Create a way to show the current date as the text.

    let todayDate = Date()
    let todayMonth = todayDate.month
    let todayDay = todayDate.day
    dailyDate.text = todayMonth + "\n" + todayDay
    let todayFullDate = todayDate.fulldate

    // Firestore things
    // This calls the Database to grab the current date's quote to set it as the initial loading image
    db = Firestore.firestore()
    todaysQuote.date = todayFullDate
    todaysQuote.updateQuote(database: db)
    print("Loaded the UI")
    // Something here to run updateTheQuoteText and display it for the user 
    updateTheQuoteText()  
}

func updateTheQuoteText() {
    self.dailyQuote.text = todaysQuote.quoteText()
}

С точки зрения философии дизайна, мне любопытно, что считается "лучшими практиками". Должен ли я загружать на устройство пользователя целую неделю / месяц цитат для локального хранения, чтобы не приходилось выполнять вызовы Firestore при каждой загрузке приложения? Или это нормально делать такие звонки на каждый день? Я планирую добавить функциональность, чтобы провести влево / вправо для цитат из предыдущих дат.

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...