I'm new to Swift. I'm trying to return an array with data from a firebase query; however, I think the closure is causing issues. I tried placing my return array on either side of the function, and using self. within the closure; however, no dice.
Below is my code:
//controls avatar collection view in the mainViewController
import Foundation
import Firebase
class AvatarModel{
//connect to firestore
let db=Firestore.firestore()
func getAvatars() -> [Avatar]{
//set array to two dimensional string array...I tried putting this on both sides of the function using self. within the closure...
var generatedAvatarArray=[Avatar]()
//query firebase database
db.collection("mainViewController").whereField("long", isGreaterThanOrEqualTo: -5).whereField("long", isLessThanOrEqualTo: 5).getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for documents in querySnapshot!.documents {
//parse JSON and prepare data to be added to array
let JSON=documents.data()
let avatar=Avatar()
avatar.fileName=JSON["thumbImage"] as! String
avatar.userName=JSON["partName"] as! String
//add db data to array to be returned by function
generatedAvatarArray.append(avatar)
}
}
//print statement works. Array is filled with db data from firestore.
print("%%%\(generatedAvatarArray[0].userName)++++\(generatedAvatarArray[1].userName)")
}
//blank array here. no db data from firestore.
return generatedAvatarArray
}