Unity Firebase错误更改foreach中的值类型

时间:2019-02-11 15:07:18

标签: c# firebase unity3d firebase-realtime-database

我正在使用Firebase实时数据库对游戏中的系统进行排名。 但是每次我尝试更改Datasnapshot的孩子的值的类型时,它似乎都无法使用

string cashierChild = "score_cashier";

FirebaseDatabase.DefaultInstance.GetReference("users").OrderByChild(cashierChild).LimitToLast(10)
    .GetValueAsync().ContinueWith(task =>
    {
        if (task.IsFaulted)
        {
            Debug.Log("Failed To Load");
        }
        else if (task.IsCompleted)
        {
            int rank = 0;
            DataSnapshot snapshot = task.Result;
            foreach (var item in snapshot.Children)
            {
                rank = rank + 1;
                Debug.Log("Rank: " + rank + ", nickname: " + item.Child("nickname").Value + ", score: " + item.Child(cashierChild).Value);
                Debug.Log((int)item.Child(cashierChild).Value);
            }
        }

    });

以上代码的结果

withTheCode

当我不使用下面的代码时,它可以很好地显示整个排名

Debug.Log((int)item.Child(cashierChild).Value);

withoutTheCode

所以我虽然是因为类型转换,例如(string)或(int)

1 个答案:

答案 0 :(得分:1)

我使用其他方式进行类型转换解决了该问题。 (string)Convert.ChangeType(item.Child("nickname").Value, typeof(string));