前提・実現したいこと
swiftとFirebaseでSNS機能を実装中です。
アカウント削除を実装しており、
投稿したデータ、フォローリスト、フォロワーリスト、プロフィールの削除が完了した後にアカウントの削除を実行させようとしています。
dispatchgroupを作成し、enterで開始、leaveで完了を管理し、leaveとなったタイミングでnotifyで指定したメソッドを実行させています。
発生している問題
結果として、削除自体は全て完了するのですが、デバックを確認すると、 notifyで指定したアカウント削除メソッドが、他のメソッドの完了を待つことなく実行されてしまいます。
該当のソースコード
func deleteAll() { let dispatchGroup = DispatchGroup() let dispatchQueue = DispatchQueue(label: "queue") dispatchGroup.enter() dispatchQueue.async(group: dispatchGroup) { [weak self] in //①ここでFirestoreにあるデータを削除 self!.deleteUserData() self!.deleteFollow() self!.deleteFollower() self!.deleteData() dispatchGroup.leave() } dispatchGroup.notify(queue: .main) { //①のメソッドが全て完了した後、アカウントを削除(AuthenticationのUser) self.deleteAccount() } }
試したこと
leaveさせるタイミングを変更してみましたが結果は変わりません。
補足情報(FW/ツールのバージョンなど)
https://qiita.com/shtnkgm/items/d9b78365a12b08d5bde1 を参考にさせていただきました。
回答2件
あなたの回答
tips
プレビュー