Я работаю с приложением Unity и использую Google Firebase, используя C #. В какой-то момент я должен либо отредактировать существующую информацию, либо добавить новую. Для этого я должен проверить, существует ли узел в моем снимке или нет, но я не могу найти функцию для этого.
HasChild () всегда возвращает true, поэтому это не полезно. Я искал, и функция exist () всегда упоминается как лучший вариант, но когда я пытаюсь использовать его (пишу как «существует» или «существует»), я получаю следующую ошибку:
error CS1061: Type 'Firebase.Database.DataSnapshot' does not contain a definition for 'Exists' and no extension method 'Exists' of type 'Firebase.Database.DataSnapshot' could be found. Are you missing an assembly reference?
или
(...) does not contain a definition for 'exists' (...)
// The data structure looks like:
// .../questions
// question_0
// index = 0
// other information...
// question_2
// index = 3
// other information...
// question_3
// index = 5
// other information...
// question_6
// index = 4
// other information...
// The code I'm using:
public static DataSnapshot dbSnapshot; // I get this from an Event Listener
public void MyMethod(){
int i = 0;
bool done = false;
do {
string path = "questions/question_" + i.ToString() + "/index";
if (dbSnapshot.Child(path).Exist()){ // The line that does not work!
long newValue = (long) dbSnapshot.Child(path).Value;
// If true, I'll do something here with this value
} else {
// If not, I'll do something else here
}
// at some point later "done" becomes true, ending loop
// this part of the code works just fine
} while (!done);
}
Не имея возможности использовать Exist (), я попытался проверить наличие нулевых значений:
if (dbSnapshot.Child(path).Value != null)
Но всякий раз, когда я нажимаю на вопрос_i, который не существует, я получаю сообщение об ошибке: InvalidCastException: Specified cast is not valid.
Эта ошибка возникает не в самом if-документе, а в следующей строке. Похоже, что ... Value! = Null возвращает true, поэтому на следующей строке приложение пытается получить значение, но, поскольку оно не существует, я получаю ошибку.
Итак, как я могу проверить, существует ли узел, не ища нулевые значения или не используя функции Exist () и HasChild ()?