Я использую 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
}
}
}