我在主视图中有这个:
@Environment(.dismiss) var dismiss
func closeLogin(){
self.dismiss()
}
我把这个函数传递给一个子视图,在那里我试图从另一个函数中调用它:
func tryLogin() async throws {
guard let url = URL(string: domain + "/do_login.php") else { return }
var postString = "&email=" + String(inputEmail)
postString += "&password=" + String(password)
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = postString.data(using: String.Encoding.utf8)
let (data, _) = try await URLSession.shared.data(for: request)
if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
if(json["passed"] as! Int == 1){
if let uid = json["userid"] as? Int {
userid = uid
}
closeLogin() // <<<<
}
}
}
我得到
Thread 23: EXC_BREAKPOINT (code=1, subcode=0x1861b7e5c)
在上
self.dismiss()
请帮助
我根据这里的注释解决了它:
func closeLogin(){
DispatchQueue.main.async {
self.dismiss()
}
}