前提・実現したいこと
Firebase Realtime Databaseの特定の値を削除する方法論が知りたくて質問させて頂きます。
上記の画像の赤線の部分だけの情報を削除する方法(考え方)が知りたいです。
特定の値だけ削除したい場合は、updateChildValuesが良いとの記事を何個か読んだのですが、
どのような考え方に基づき、どんなコードを書くのが良いのかはっきり分かりません。
teratailの別の記事でも読んだのですが、下のコードと共に、
「いったん目的のデータを取得して、取得した結果を元にupdateChildValuesで削除するとよいと思います」
とありました。
swift
1ref.queryEqualToValue(...) // この辺は適当に 2 .observeSingleEvent(of: .value, with: { snapshot in 3 var removeKeys: [String: Any] = [:] 4 for item in (snapshot.children) { 5 let snapshot = item as! DataSnapshot 6 removeKeys[snapshot.key] = NSNull() 7 } 8 ref.updateChildValues(removeKeys) 9 })
上で紹介したコードの処理で分からないこと
一旦、削除したい情報を取得しているのはわかるのですが、
swift
1(ここの部分から下の処理の意味が良く掴めないです) 2 removeKeys[snapshot.key] = NSNull() 3
removeKeysに格納された値で、
**updateChildValuesを使い、削除したい値を更新する、**ということをしているのでしょうか??
加えて
先に示したデータベースのスクリーンショットでは省略されていますが、紫色のcategorysが複数あるという構造を取っています。
このとき、複数のcategorysから、subliminals配下の赤線部分の情報を削除する為には、
「categorysのautoIDを利用してfor文を回し、その度に、上で紹介したコードを実装して、データを削除していく」という考え方でいいのでしょうか??
初学者なもので、的確な処理の方法が、何かあるのではないかと考えていますが、
自分でははっきりと掴めません。
教えて頂けたら嬉しいです。お願いします!!
回答1件
あなたの回答
tips
プレビュー