什么时候DatabaseReference中的键可以为零?

时间:2018-09-25 06:19:38

标签: ios swift firebase firebase-realtime-database

我刚刚将Firebase SDK从5.0.2更新为5.0.3,现在遇到编译错误。

其中之一是由于以下事实:属性key在版本var key: String { get }中曾经被定义为5.0.2,现在在{{1中被定义为var key: String? { get } }}。

我找不到关于它变为零的原因的任何解释,并且文档仅指出:

5.0.3

因为这意味着在我的代码中进行了大量重构,所以我想了解如此大的更改的原因以及Gets the last token in a Firebase Database location (e.g. 'fred' in https://SampleChat.firebaseIO-demo.com/users/fred) @return The key of the location this reference points to. 属性变为nil的原因。

1 个答案:

答案 0 :(得分:0)

以下是Firebase支持提供的一些信息,可以作为解释和部分答案。

  

如果您对数据库的 root 有DatabaseReference,则密钥   为零。

表示在对根目录的DatabaseReference情况下,键将为零,或者对于其他引用具有键,因此将其定义为可选键。所以这很有意义

var key:String? { get }

然后有一个证明:

var ref: DatabaseReference!
ref = Database.database().reference() //points to the root ref
print(ref)
print(ref.key)

和输出

https://some_firebase.firebaseio.com
nil

如果考虑到这一点,给定这样的概念性Firebase参考

let usersRef = "https://some_firebase.firebaseio.com/users"

当您请求关键属性时,它是从路径派生的

print(usersRef.key)  //prints Optional("users")

"https://some_firebase.firebaseio.com/users"
                                      ^^^^^ the key

,对于根数据库引用,则没有从中获取密钥的路径。