установить значение для переменной один раз или инициализировать переменную - Swift - PullRequest
0 голосов
/ 21 апреля 2020

Я использую Firebase Firestore в качестве базы данных, и я хочу ограничить количество обращений к базе данных, поэтому я планирую один раз инициализировать объект и подготовить его для использования в любом месте моего приложения. То, что я хочу сделать, это в основном дать publicUsername значение, собранное из базы данных один раз, поэтому, когда publicUsername имеет значение, я больше не хочу вызывать базу данных. Затем я хочу вызвать publicUsername через мое приложение, например, когда я хочу показать пользователю его имя пользователя, я могу просто вызвать значение publicUsername следующим образом: usernameLabel.text = publicUsername.

Вот 2 метода, которые я пробовал используя, но не везет!:

let publicUsername = Uzer().uzername


class Uzer {

   var uzername = ""

    init() {
        let uid = Auth.auth().currentUser?.uid
        let database = Firestore.firestore().collection("Users").document(uid!)
        database.getDocument { (docSnapshot, error) in
           guard let docSnapshot = docSnapshot, docSnapshot.exists else {return}
           let mydata = docSnapshot.data()
           let username = mydata!["Username"] as? String ?? ""
            self.uzername = username
        }
    }
}

ИЛИ


let publicUsername = User().username


class Users {

    var username = ""

    func returnUsername () -> String {
        if username == "" {
                let uid = Auth.auth().currentUser?.uid
                let database = Firestore.firestore().collection("Users").document(uid!)
                database.getDocument { (docSnapshot, error) in
                   guard let docSnapshot = docSnapshot, docSnapshot.exists else {return}
                   let mydata = docSnapshot.data()
                   let username = mydata!["Username"] as? String ?? ""
                    self.username = username
                    }
            return username
        } else {
         return username

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