我是新来的SwiftUI和火力地堡和我在试图建立我的第一个应用程序。 我储存游戏文件Firestore及的领域之一是一系列包含的用户标识的球员你可以看到的图像。
正在说,我想列举所有的游戏有一定的用户和拥有所有的球员中所列的每一个细胞(以是重要)。
为了创建该清单的游戏在UI我创建了一个GameCellListView和GameCellViewModel. 该GameCellViewModel应该载入这两个游戏和该阵列的用户对应的每一个的游戏。 但是我不能够载的用户的一个阵列。 我已经去过玩家阵列和查询的数据库对每个Id和追加的用户阵列;然后我应该能够返回这个用户阵列。 因为我使用一个循环,我不能分配的价值观的阵列,然后返回。 我试图使用地图(),但我不能进行查询。
我们的目标是要载荷,"所有"var有一个结构,收到一个游戏和玩家 GamePlayers(players: [User], game: Game)
它看起来应该是什么样的代码下面,但用户阵总是空的。 这个函数的运行GameCellViewModel init。 我希望你能了解我的问题,并感谢你在前进! 被困在这个为期2周的现在
func loadData() {
let userId = Auth.auth().currentUser?.uid
db.collection("games")
.order(by: "createdTime")
.whereField("userId", isEqualTo: userId)
.addSnapshotListener { (querySnapshot, error) in
if let querySnapshot = querySnapshot {
self.games = querySnapshot.documents.compactMap { document in
do {
let extractedGame = try document.data(as: Game.self)
var user = [User]()
let users = extractedGame!.players.map { playerId -> [User] in
self.db.collection("users")
.whereField("uid", isEqualTo: playerId)
.addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
user = documents.compactMap { queryDocumentSnapshot -> User? in
return try? queryDocumentSnapshot.data(as: User.self)
}
}
return user
}
self.all.append(GamePlayers(players: users.first ?? [User](), game: extractedGame!))
return extractedGame
}
catch {
print(error)
}
return nil
}
}
}
}