当前位置: 首页 > 知识库问答 >
问题:

如何在一个事务中使用Swift删除Firebase中的多条路径

闻人望
2023-03-14

我想从Firebase中删除一个存在于多个路径中的元素。

在一个事务中实现这一点的最佳做法是什么?

我搜索了一下,唯一能找到的就是,例如:

let dictionary = [ path1 : nil,
                   path2 : nil ]

DatabaseReference.updateChilds(dictionary)

此外,使用NSNull()代替nill也不起作用

但这引发了一个异常,因为我无法使用更新方法删除子级。

我们将不胜感激。

编辑:

我得到的例外是:

***由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“无效更新:节0中的项目数无效。”。更新(1)后现有节中包含的项目数必须等于更新(1)前该节中包含的项目数,加上或减去从该节中插入或删除的项目数(0插入,1删除),加上或减去移入或移出该节的项目数(0移入,0移出)。

单击按钮后,对象将被删除,并激活连接到此功能的序列:

@IBAction func unwindFromDeleteSegue(segue: UIStoryboardSegue)
    {

        if (prodToLoad != nil)
        {
            for  cell in ProductsCollection.visibleCells as! [ProductsCollectionViewCell]
            {
                if ( cell.productUniqueID == prodToLoad?.UniqueID())
                {
                    let indexPath = self.ProductsCollection.indexPath(for: cell)
                    _ = self.ProductsCollection.numberOfItems(inSection: 0)
                    ProductsCollection.deleteItems(at: [indexPath!]) 
                }
            }
        }

        ProductsCollection.reloadData()
    }

编辑:

项目现在已从集合中正确删除,但仍未从Firebase中删除...

共有1个答案

督冠玉
2023-03-14

看起来您看到的异常是成功删除子级的结果。如果您有某种类型的引用观察者填充您的集合视图,请确保您正在更新数据源以反映已删除的子级。

 类似资料:
  • 如何删除Google Firebase中的值? 我想删除Google Firebase中的值,但我不知道如何使用此代码。 我尝试了以下方法,但没有成功:

  • 假设我的数据库结构如下: 当删除任何用户1\u UID时,我想从所有节点a、b、c中删除用户1\u UID。 例如,如果我从节点b中删除了key1:user1\u-UID,是否有一种方法也可以从节点a和节点c中删除key1:user1\u-UID,而无需遍历所有节点?还是我的数据结构错误(请注意,这些数据可能嵌套得更深)?

  • 问题内容: 我如何消除在代码点火器中位于中心某处的每个路径中的突出?我要清洁非吗? 问题答案: 如果您使用的是Apache,请将.htaccess文件放在根Web目录中,其中包含以下内容:

  • 所以我导入PromiseKit,然后尝试 显然,这是行不通的,我想知道,如果可能的话,我还缺少什么可以让Firebase的promise发挥作用。我试图实现的是用一个catch方法一次性删除四个Firebase引用。 使用nodeJs,我可以轻松使用: 有没有办法在Swift中实现这一点?

  • 问题内容: 我正在尝试开发出租车预订等应用程序并将数据存储在Firebase上。 但是,从Firebase查询RideDetail(History)数据时遇到问题。 我想以分页形式获取ride_detail以获得特定的“ customer_id”。 我的Firebase DataStructure: 这里的“ payment_time”是付款完成后的时间戳。 我想要的响应是: 我希望我在order

  • 问题内容: 使用分区时,通常需要一次删除所有分区。 然而 不起作用。(不考虑使用通配符)。 有没有一种优雅的方法(易于记忆),可以在一个命令中使用通配符删除多个表? 问题答案: 使用逗号分隔的列表: 如果您确实需要脚枪,这可以做到: