gpt4 book ai didi

ios - 使用 UpdateChildValues 从 Firebase 中删除

转载 作者:IT王子 更新时间:2023-10-29 05:24:36 26 4
gpt4 key购买 nike

我正在尝试同时从 Firebase 数据库的多个位置删除数据。

Firebase docs状态:

"The simplest way to delete data is to call removeValue on a reference to the location of that data. You can also delete by specifying nil as the value for another write operation such as setValue or updateChildValues. You can use this technique with updateChildValues to delete multiple children in a single API call."

我的代码是

let childUpdates = [path1 : nil,
path2 : nil,
path3 : nil,
path4 : nil]

ref.updateChildValues(childUpdates)

所有四个路径都是字符串,但我得到一个错误:

"Type of expression is ambiguous without more context."

我假设这是因为 nil 值而发生的,因为如果我用其他任何东西(例如 Int)替换 nil,错误就会消失。

使用 updateChildValues 从 Firebase 中删除数据的正确方法是什么?我们希望它以类似于 Firebase 中的 removeValue() 函数的方式工作。我们更愿意这样做的原因是因为它可以在一次调用中从多个位置移除。

最佳答案

所以这里的问题是

ref.updateChildValues(childUpdates)

需要一个 [String: AnyObject!] 参数来更新 ChildValues 和 AnyObject!不能是 nil(即你不能使用 AnyObject?这是一个可选的,可以是 nil)

但是,你可以这样做

let childUpdates = [path1 : NSNull(),
path2 : NSNull(),
path3 : NSNull(),
path4 : NSNull()]

因为任何对象!现在是一个 NSNull() 对象(不是 nil),Firebase 知道 NSNull 是一个 nil 值。

编辑

您可以对此进行扩展以进行多位置更新。假设你有一个结构

items
item_0
item_name: "some item 0"
item_1
item_name: "some item 1"

并且您想要更新两个项目名称。这是快速代码。

func updateMultipleValues() {
let path0 = "items/item_0/item_name"
let path1 = "items/item_1/item_name"

let childUpdates = [ path0: "Hello",
path1: "World"
]

self.ref.updateChildValues(childUpdates) //self.ref points to my firebase
}

结果是

items
item_0
item_name: "Hello"
item_1
item_name: "World"

关于ios - 使用 UpdateChildValues 从 Firebase 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462074/

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