所以我一直遇到一个奇怪的问题。本质上,我有一个数组,它是tableView的数据源:
data : [(String: SomeDataStruct)] = [(username1, data1), (username2, data2), (username3, data3)...]
在我的Firebase数据库中,我的数据是:
如果我从表视图中删除一个值,则可以通过从数组中删除相应的项来完成。然后,我从Firebase中删除该项目,以使数据保持同步。例如,如果要删除用户名2,则从数组中删除具有用户名2的元组-它位于索引1。然后使用:
data : [(String: SomeDataStruct)] = [(username1, data1), (username2, data2), (username3, data3)...]
referenceToOrders.child("username2").removeValue(completionBlock: { (err, ref) in
print(data)
// data is [] when it should be [(username1, data1), (username3, data3), (username4 ... ]
})
我将其隔离到这一行-由于某种原因,调用firebase removeValue函数会导致数据数组被清除。解决方法是,在调用之前,先创建数据数组的副本。但是,我对这种解决方案不满意。
帮助?
答案 0 :(得分:0)
正在回答,以备将来参考。
因此,在添加了许多打印语句之后,我发现问题是我有一个观察Firebase处理程序,该处理程序在removeValue之后但在完成处理程序之前运行。这是有道理的,因为此时数据库已更改,因此处理程序将触发。