使用UpdateChildValues从Firebase中删除

时间:2016-07-19 14:57:47

标签: ios swift firebase firebase-realtime-database

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

Firebase docs州:

  

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

我的代码是

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

    ref.updateChildValues(childUpdates)

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

  

"没有更多上下文,表达的类型是模糊的。"

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

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

2 个答案:

答案 0 :(得分:51)

所以这里的问题是

ref.updateChildValues(childUpdates)

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

但是,你可以这样做

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

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

答案 1 :(得分:1)

我认为此错误来自您提供的第一行。您需要指定字典的类型。所以把它改成

let childUpdates: [String : AnyObject?] = [path1: nil, path2: nil,...]