Is concurrency the most difficult concept in Swift? I am having an issue loading data from Cloud Firestore, and I’m pretty sure it’s related to concurrency.
Chris makes it look so easy in the Learning App. As far as I can see, my code is pretty similar, except his works and mine doesn’t…
My model:
struct User: Identifiable {
var id = ""
var nickname = ""
var iLike = [""]
var likeMe = [""]
}
My content model:
import Foundation
import FirebaseAuth
import FirebaseFirestore
import FirebaseFirestoreSwift
class ContentModel: ObservableObject {
// reference to Cloud Firestore database
let db = Firestore.firestore()
// Likes
@Published var usersWhoLikeMe = [User]()
@Published var usersWhoILike = [User]()
@Published var myFriends = [User]()
func getUsersWhoLikeMe() {
let ref = db.collection("users").whereField("iLike", arrayContains: Auth.auth().currentUser!.uid)
ref.getDocuments { snapshot, error in
if error == nil {
var userList = [User]()
for doc in snapshot!.documents {
let m = User(
nickname: doc["nickname"] as? String ?? "",
iLike: doc["iLike"] as? [String] ?? [""],
likeMe: doc["likeMe"] as? [String] ?? [""]
)
userList.append(m)
}
DispatchQueue.main.async {
self.usersWhoLikeMe = userList
}
}
}
}
}
Any suggestions?