我正在尝试同时从Firebase数据库中的多个位置删除数据。
"删除数据的最简单方法是在对该数据位置的引用上调用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()函数类似的方式工作。我们之所以喜欢这样做是因为它可以在一次通话中从多个地方删除。
答案 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,...]