现在不再是问题。我重新编辑它来解释发生了什么:
我做了这样的嵌套写入
let key: String!
key = "foo"
let dict = ["Zoes": "7th Street"]
ref.child("/\(key)/shops").setValue(dict)
这导致“foo”的键变为:"Optional(\"foo\")"作为存储在 firebase 中的字符串。
所以我认为由于 key 被声明为隐式展开,它只会在字符串插值中展开。但事实证明在字符串插值期间字符串没有被强制解包,这就是为什么它被写成“可选”。现在这不是 firebase 问题,它只是 String 插值在 Swift 中的工作方式。