Когда ключ в DatabaseReference может быть нулевым? - PullRequest
0 голосов
/ 25 сентября 2018

Я только что обновил Firebase SDK с 5.0.2 до 5.0.3 и теперь сталкиваюсь с ошибками компиляции.

Одна из них связана с тем, что свойство key раньше определялось какvar key: String { get } в версии 5.0.2 и теперь определяется как 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.

Поскольку в моем коде много рефакторинга, я бы хотел понять причину такого большого изменения и когда свойство key станет нулевым.

1 Ответ

0 голосов
/ 27 сентября 2018

Вот некоторая информация из службы поддержки Firebase, которая может служить объяснением и частичным ответом.

Если у вас есть DatabaseReference на root базы данных, ключ будет равен нулю.

, что означает, что ключ будет равен нулю в случае 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

, а в случае корневой базы данных DatabaseReference нет пути для получения ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...