LoginSignup
5
4

More than 3 years have passed since last update.

[Swift] FirebaseStorageをフォルダの中身を全て削除する

Posted at

FirebaseStorageはフォルダごと削除ができない

FirebaseStoregeはフォルダをまるごと削除ができない仕様らしいです。。。

なのでユーザーの削除などで複数あるプロフィール画像や投稿画像を削除する場合はループでフォルダにあるファイルを削除しなければいけないみたい、、、

この仕様制限だけでFirebaseStorageから離れる開発の人も多いんじゃ、、、(わからん)

いろいろ調べて見たけどやり方として2通りあるっぽい。

  • FirebaseのCloudfunctionsを使う
  • Swiftでループを回して、1つ1つファイルを削除する

僕はjsが得意でないので、Cloudfunctionsは諦めて
後者のループを回す方法選びました。

参考記事がなく、自分でfirebaseStorageにいいメソッドないかな〜ってみたところ、、、ありました!!

SwiftでループをまわしFirebaseStorageをフォルダの中身を全て削除する方法

listAllを使い、フォルダにあるファイルを全てとってきて、それをループして削除します。

let storage = Storage.storage()
let storageRef = storage.reference()
storageRef
    .child("users")
    .child(self.uid)
    .listAll(completion: { (StorageListResult, error) in
         if let error = error {
             print("エラー\(error)")
         } else {
             for ref in StorageListResult.items {
                 ref.delete { (error) in
                     if let error = error {
                         print("エラー\(error)")
                     } else {
                         print("storage削除成功!")
                     }
              }
         }
     })

もっといい方法あるって方はコメントください!!
フォルダ毎削除できるようにしてほしい😂

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4