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

标签 swift database firebase firebase-realtime-database

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

在一次事务中完成此操作被认为是良好的做法?

我进行了搜索,唯一能找到的是,例如:

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

DatabaseReference.updateChilds(dictionary)

此外,使用 NSNull() 而不是 nill 也不起作用

但这会引发异常,因为我无法使用更新方法来删除子项。

如果有帮助,我们将不胜感激。

编辑:

我遇到的异常:

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

单击按钮后,该对象将被删除,并激活连接到此函数的segue:

@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 中删除...

最佳答案

看起来您看到的异常是子项被成功删除的结果。如果您有某种类型的引用观察者填充您的 Collection View ,请确保您正在更新数据源以反射(reflect)已删除的子项。

关于swift - 如何在一笔事务中使用 Swift 删除 Firebase 中的多个路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52082678/

相关文章:

Swift:存储协议(protocol)实例

database - postgresql 中的 max_stack_depth 错误

android - 将 Google 项目迁移到 Firebase 控制台

ios - 如何在 Apple Connect 中获取 ProductID?(在 App 购买中)

ios - 解析 localDatastore 仅返回 1 个对象

database - 在数据库中(不仅是关系型), "row"与 "column"到底是什么

java - 如何迭代 Firebase 数据库中的节点?

java - 如何检查 Cloud Firestore 集合是否存在? (查询快照)

ios - 我怎样才能实现在 Wunderlist iOS 应用程序中使用的这种类型的 View ?

mysql - 检查 Laravel 5 中单列中的多个值