【问题标题】:How to remove multiple paths in Firebase with Swift in one transaction如何在一个事务中使用 Swift 删除 Firebase 中的多个路径
【发布时间】:2019-02-04 13:14:26
【问题描述】:

我想从 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 中删除...

【问题讨论】:

标签: swift database firebase firebase-realtime-database


【解决方案1】:

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

【讨论】:

  • 但是路径没有从 Firebase 中删除...另外 - 我应该在删除之前从 collectionView 中删除我想要删除的对象?
  • 您当前是否正在删除您自己的集合视图单元格?
  • 现在我看着它,我不知道我为什么要打电话给 numberOfItems
  • 好的,好消息是 - 异常消失了 :) 并且该项目已从集合中正确删除。但仍未从 Firebase 中删除
  • @Callam 你还在指导吗?我有兴趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多