我想从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中删除...
答案 0 :(得分:0)
看起来您看到的异常是由于成功删除了子代而导致的。如果您有某种类型的参考观察者正在填充您的集合视图,请确保您正在更新数据源以反映已删除的子代。