iOS:Firebase removeValue 似乎正在损坏数组数据?

标签 ios swift firebase

所以我遇到了一个奇怪的问题。本质上,我有一个数组,它是 tableView 的数据源:

data : [(String: SomeDataStruct)] = [(username1, data1), (username2, data2), (username3, data3)...]

在我的 firebase 数据库中,我的数据是:

enter image description here

如果我从 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/

相关文章:

android - 添加 firebase 依赖项后无法构建项目

ios - 调用初始化程序时更改属性值

ios - 无法将设备检测为 iPad

ios swift 3 xcode 8 核心数据

ios - 用于标记 Google Maps SDK、Swift 2.0 的自定义信息窗口

android - 数据库调用后如何设置文本

firebase - Google Cloud 中 Firestore 管理的用户角色

iOS native 代码编译错误,使用未声明的标识符 'threadStateData',从宏 'CN1_THREAD_STATE_PASS_SINGLE_ARG' 扩展

iphone - IOS 问题在特定点获取索引路径行

ios - 使用图像选择器后,图像未显示在ImageView中