【发布时间】:2020-06-08 15:57:26
【问题描述】:
在我的SettingsViewModel 我有以下内容:
class SettingsViewModel: ObservableObject {
func deleteUser(){
let userId = Auth.auth().currentUser!.uid
Firestore.firestore().collection("users").document(userId).delete() { err in
if let err = err {
print("error: \(err)")
} else {
print("Deleted user in db users")
Storage.storage().reference(forURL: "gs://myapp.appspot.com").child("avatar").child(userId).delete() { err in
if let err = err {
print("error: \(err)")
} else {
print("Deleted User image")
Auth.auth().currentUser!.delete { error in
if let error = error {
print("error deleting user - \(error)")
} else {
print("Account deleted")
}
}
}
}
}
}
}
}
在我的设置视图中,我在按钮中调用函数,如下所示:
@ObservedObject var settingsViewModel = SettingsViewModel()
func logout() {
session.logout()
}
Button(action: {
self.showActionSheet = true
}) {
Text("Delete Account").foregroundColor(.white).padding()
}.background(Color.red)
.cornerRadius(10)
.padding(.top, 35)
.actionSheet(isPresented: self.$showActionSheet) {
ActionSheet(title: Text("Delete"), message: Text("Are you sure you want to delete your account?"),
buttons: [
.default(Text("Yes, delete my account."), action: {
self.deleteUser()
self.session.logout()
self.showActionSheet.toggle()
}),.cancel()
])
}
这不能正常工作,因为它会删除帐户:
Auth.auth().currentUser!.delete { error in
if let error = error {
print("error deleting user - \(error)")
} else {
print("Account deleted")
}
}
然后退出,留下其他数据,但如果我删除:
Auth.auth().currentUser!.delete { error in
if let error = error {
print("error deleting user - \(error)")
} else {
print("Account deleted")
}
}
然后它会删除用户数据,但不会删除存储:
Storage.storage().reference(forURL: "gs://myapp.appspot.com").child("avatar").child(userId).delete()
我试图让它流动,以便它删除用户数据,然后是图像,然后是身份验证数据,然后注销应用程序。所有功能都可以工作,但将它们放在一起会导致问题。
【问题讨论】:
标签: swift firebase google-cloud-firestore swiftui