我正在使用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);
}
}
});
以上代码的结果
当我不使用下面的代码时,它可以很好地显示整个排名
Debug.Log((int)item.Child(cashierChild).Value);
withoutTheCode
所以我虽然是因为类型转换,例如(string)或(int)
答案 0 :(得分:1)
我使用其他方式进行类型转换解决了该问题。
(string)Convert.ChangeType(item.Child("nickname").Value, typeof(string));