gpt4 book ai didi

swift - 在 Firebase 中删除项目

转载 作者:行者123 更新时间:2023-11-28 15:08:50 24 4
gpt4 key购买 nike

我在 Firebase 中有以下数据:

Before Deletion (Link)

在“-Kabn1954”分支中,我想删除项目“apple”。使用 Swift,我在特定分支中的特定索引处删除了一个项目,使用这个:

self.ref.child("-Kabn1954").child("foods").child("1").removeValue()

但是,在我这样做之后,Firebase 数据看起来像这样:

After Deletion (Link)

如您所见,此分支中的数据现在直接从索引 0 转到索引 2。因此,我得到一个错误。我怎样才能使索引为 1 的项目被删除时,剩下的两个项目的索引为 0,后跟索引为 1?

最佳答案

Firebase 不会 actually store the data as an array ,而是在您观察时将其存储为由索引键控的对象。该指南建议您应该尝试重构数据,以便不使用类似数组的行为。

如果那不可能或真的不可取,我不知道 Swift API 是如何工作的,但是在 python 和 JavaScript 库中,如果您观察父 foods 元素,你会得到一个数组对象,你可以拼接它并推送更新。我猜这在 Swift 中也是如此,因为 API indicates NSArray 也可以返回。

正如博文中提到的,当您想要重新编制索引时,您需要更新整个数组,因为 Firebase 不会为您做这件事。 setValue() accepts an NSArray 可以在 foods 引用上调用。请注意此处的竞争条件,您需要将读取和写入封装到单个事务中以避免丢失更新。

关于swift - 在 Firebase 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47987423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com