使用UpdateChildValues从Firebase中删除

Oli*_*ins 12 ios firebase swift firebase-realtime-database

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

火力地堡文档状态:

"删除数据的最简单方法是在对该数据位置的引用上调用removeValue.您也可以通过将nil指定为另一个写操作(如setValue或updateChildValues)的值来删除.您可以将此技术与updateChildValues一起使用来删除单个API调用中有多个子节点."

我的代码是

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

    ref.updateChildValues(childUpdates)
Run Code Online (Sandbox Code Playgroud)

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

"没有更多的背景,表达的类型是模棱两可的."

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

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

Jay*_*Jay 53

所以这里的问题是

ref.updateChildValues(childUpdates)
Run Code Online (Sandbox Code Playgroud)

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

但是,你可以这样做

let childUpdates = [path1 : NSNull(),
                    path2 : NSNull(),
                    path3 : NSNull(),
                    path4 : NSNull()]
Run Code Online (Sandbox Code Playgroud)

因为AnyObject!现在是一个NSNull()对象(不是nil),Firebase知道NSNull是一个零值.