我刚刚将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的原因。
答案 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
,对于根数据库引用,则没有从中获取密钥的路径。