【问题标题】:Unable to get a "null" value from Firebase snapshot in Unity on android无法从 Android 上 Unity 中的 Firebase 快照获取“空”值
【发布时间】:2018-08-06 20:02:29
【问题描述】:

我想在 FirebaseRef snapshot.Value == null 时执行 x。这每次都可以在 Unity 编辑器中使用,但是当我在 Android 设备上执行此操作时,每次都会失败。该应用程序不会崩溃,它只是不做任何事情。

身份验证工作正常。 数据库工作正常(当值存在时,我会获取所有其他值)但是当值不存在时,这就是我遇到问题的地方。

这是我的 sudo 代码,任何帮助将不胜感激。

ref.Child("Location/That/Doesnt/Exist").GetValueAsync().ContinueWithTask(Task => {
  if (task.IsFaulted){
    //Do something
  }
  else if (task.IsCompleted){
    DataSnapshot snap = task.Result;
    if(snap.Value == null){
      //This is what hangs. I get here and it just does nothing.
    }
  }
});

我很迷茫。我不确定如何解决这个问题。我没有收到任何错误,但这就像函数就停在那里一样。

谢谢大家!

编辑

所以我正在做的解决这个问题是在路径中创建一个 DB 条目,其中 key == "0" 和 value == 0。然后我说如果 ChildCount 大于 1 并且那个孩子有更多超过 1 个孩子,继续。

我觉得这是一个非常糟糕的方法。

【问题讨论】:

  • Here is a simular javascript question 带有 Android 答案。
  • 答案建议使用 HasChild(var),我也这样做过,甚至尝试过使用“ChildCount > x”。两者都不能在设备上工作,但都可以在 Unity 编辑器中工作。
  • 您是否尝试过使用exists 功能?
  • 是的,我得到了相同的结果。所有在编辑器中工作,但在 android 构建中失败。

标签: android firebase unity3d firebase-realtime-database


【解决方案1】:

我遇到了同样的错误。我发现了一个例外,我得到了 NullReference,似乎在 android 上,当它在数据库上找不到时返回 Null,所以你必须转换它:

if(snap.Value == null){ }

到这里:

if (snap==null && snap.Value==null)

当 snap 对象为 null 时,您正在尝试访问 snap.Value。

对不起我的英语,我希望这对你有帮助。

【讨论】:

  • 试过这个并没有用,但它给了我另一个想法。我将尝试另一种方法,因为我认为您正在做某事。作为记录,我尝试了 DataSnapshot snapshot = task.Result; if (snapshot == null && snapshot.Value == null) { popMNG.CreatePop("我们得到的是空位置!", "Wa hoo!", "close", null); }
  • 但是,尝试相反,我的意思是,如果你尝试 if (snap==null && snap.Value==null) 那是行不通的,因为你正在访问 snap.Value,当snap 为 null,试试这个: if (snap!=null && snap.Value!=null) { //something code } else { //当它为 null 时你想做什么 }
【解决方案2】:

试试斜杠

“位置/那个/不存在/存在/”

【讨论】:

  • 尾部斜线似乎没有这样做。我得到相同的结果。根据 Firebase 文档,他们也不使用尾随 /。 FirebaseDatabase.DefaultInstance .GetReference("Leaders") .GetValueAsync().ContinueWith(task => { if (task.IsFaulted) { // 处理错误... } else if (task.IsCompleted) { DataSnapshot snapshot = task.结果; // 用快照做一些事情... } });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多