I'm trying to create an array of structs by creating a function to fetch data from firestore and then passing the three structs fetched to an array of structs. Here is my code:
func fetchUsers() {
var user1: User
var user2: User
var user3: User
docRef = Firestore.firestore().document("users/user1")
docRef.getDocument { (docSnapshot, error) in
guard let docSnapshot = docSnapshot, docSnapshot.exists else { return }
let myData = docSnapshot.data()
let fName = myData!["name"] as? String ?? ""
let fUsername = myData!["username"] as? String ?? ""
let fBioText = myData!["bioText"] as? String ?? ""
let user = User(name: fName, username: fUsername, bioText: fBioText, profileImage: #imageLiteral(resourceName: "mauricioprofileimage"))
user1 = user
}
self.docRef = Firestore.firestore().document("users/user2")
self.docRef.getDocument { (docSnapshot, error) in
guard let docSnapshot = docSnapshot, docSnapshot.exists else { return }
let myData = docSnapshot.data()
let fName = myData!["name"] as? String ?? ""
let fUsername = myData!["username"] as? String ?? ""
let fBioText = myData!["bioText"] as? String ?? ""
let user = User(name: fName, username: fUsername, bioText: fBioText, profileImage: #imageLiteral(resourceName: "trumpprofileimage"))
user2 = user
}
self.docRef = Firestore.firestore().document("users/user1")
self.docRef.getDocument { (docSnapshot, error) in
guard let docSnapshot = docSnapshot, docSnapshot.exists else { return }
let myData = docSnapshot.data()
let fName = myData!["name"] as? String ?? ""
let fUsername = myData!["username"] as? String ?? ""
let fBioText = myData!["bioText"] as? String ?? ""
let user = User(name: fName, username: fUsername, bioText: fBioText, profileImage: #imageLiteral(resourceName: "amandaprofileimage"))
user3 = user
}
return [user1, user2, user3]
}
let users: [User] = fetchUsers()
The problem I'm getting is that when I try to fill my users array, it says that it doesn't recognize the user1, user2 and user3 that I created in the Fetchfuncion.
Ps: I'm using firestore. Thank you for all the help!