所以我遇到了一个奇怪的问题。本质上,我有一个数组,它是 tableView 的数据源:
data : [(String: SomeDataStruct)] = [(username1, data1), (username2, data2), (username3, data3)...]
在我的 firebase 数据库中,我的数据是:
如果我从 TableView 中删除一个值,这是通过从数组中删除相应的项目来完成的。然后,我从 firebase 中删除该项目以保持数据同步。例如,如果我想删除 username2,我会从数组中删除包含 username2 的元组 - 它位于索引 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 函数会导致数据数组被清除。作为解决方法,在调用之前,我创建数据数组的副本。但是,我对这个解决方案并不满意。
帮忙?
最佳答案
回答以供将来引用和其他人使用。
因此,在添加大量打印语句后,我发现问题是我有一个观察 Firebase 处理程序,该处理程序紧接在 removeValue 之后但在完成处理程序之前运行。这是有道理的,因为数据库此时已更改,因此处理程序会触发。
关于iOS:Firebase removeValue 似乎正在损坏数组数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57247349/