ios — RemoveValueListener () не работает для c ++ firebase

Я использую базу данных Firebase в реальном времени в моем Приложение C ++ (cocos2dx). Попытка добавить valueListner, который работает нормально и получение ответа, если есть какие-либо изменения в указанной позиции узла, но получение ответа даже после удаления ValueListner в этой позиции узла.

Сценарий таков:

  1. Добавьте слушатель значения, используя AddValueListener ()
  2. Позвоните UpdateChildren (карта)
  3. Если RemoveValueListener () является позвонил до получения ответа сверху UpdateChildren, тогда слушатель все еще вызывается для этого обновления.

Теперь мне нужно удалить слушателя, так как я должен перейти с экрана 1 на экран 2, независимо от состояния ответа от UpdateChildren.

Я использую приведенный ниже код snnipet:

// create database reference
firebase::App * app = firebase::App::GetInstance();
DatabaseReference ref = Database::GetInstance(app)->GetReference();

// create reference
DatabaseReference refUpdate = ref.Child(“path”);

// create Value Event Listener
ExpectValueListener * listener = new ExpectValueListener();
refUpdate.AddValueListener(listener);

// create map for update
std::map<std::string, firebase::Variant> update_values;
update_values.insert(std::make_pair("Apple", 100));
update_values.insert(std::make_pair(“Type”, "is a fruit!"));

refUpdate.UpdateChildren(update_values);

Чтобы проверить, работает ли RemoveValueListener () или нет, я вызвал RemoveValueListener () сразу после UpdateChildren (), а также удалил прослушиватель из памяти. Затем он просто рухнул в iOS Firebase SDK.

Ниже код сннипета используется для удаления:

//remove value listener just after UpdateChildren
refUpdate.RemoveValueListener(listener);

// delete listener from memory
delete listener;
listener = nullptr;

Я также приложил скриншот аварии Скриншот.
На скриншоте путь ссылки на базу данных виден в _куски блок.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]