Я пытаюсь инициализировать значение в методе init (), но я получаю эту ошибку Экранирующее закрытие захватывает изменяющийся параметр 'self'
Это работает, если я помещаю его в onAppear () но он не будет звонить, если экран находится в задней группе, так что это не то, что мне было нужно. Прикрепил мою кодировку ..
struct GameRowForDemo: View {
let game : Game
var user : User?
init(game:Game){
self.game = game
let uid = "123"
User.getById(id: uid).then { user in
self.user = user!
}
}
var body: some View {
Text("Text")
}
}
static func getById(id: String) -> Promise<User?> {
let p = Promise<User?> { (resolve , reject) in
let db = Firestore.firestore()
let ref = db.collection("users").document(id)
ref.getDocument { (snapshot, err) in
if let err = err{
reject(err)
}
guard let dict = snapshot?.data() else {
print("No User found")
resolve(nil)
return
}
do {
let data = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
let group = try JSONDecoder.init().decode(User.self, from: data)
resolve(group)
}catch{
reject(error)
}
}
}
return p
}