【问题标题】:Loading a dictionary of lists of lists in Unity with Firebase使用 Firebase 在 Unity 中加载列表列表字典
【发布时间】:2021-02-25 19:54:09
【问题描述】:

所以我像这样保存我的字典:

public void saveData()
{
    database.Child("Users").Child("User").SetValueAsync(shoppingList);    
}

但是如果我想加载我的字典,当我想访问任何东西时它总是返回 null。我是这样加载的:

    public void loadData()
    {

    FirebaseDatabase.DefaultInstance.GetReference("Users").GetValueAsync().ContinueWith(task => {
        if (task.IsFaulted)
        {
            // Handle the error...
        }
        else if (task.IsCompleted)
        {
            var result = task.Result;

            var loadedDict = result.Value as Dictionary<string, List<List<string>>>;

            Debug.Log(loadedDict);       

            
        }
    });
}

【问题讨论】:

    标签: c# firebase unity3d


    【解决方案1】:

    我认为可能发生的情况是 var loadedDict = result.Value as Dictionary&lt;string, List&lt;List&lt;string&gt;&gt;&gt;; 没有立即进行转换。

    我会检查以下内容。

    1.- 数据在保存阶段被正确保存,并存储在数据库中并在问题中确认。

    2.- 即使字典为空,检查任务返回的数据是否为空。因为可能正在var result = task.Result; 中检索数据,但无法转换为字典。如果是这种情况,我也会在问题中确认。

    3.- 如果数据实际上是在第 2 阶段检索的,而转换不起作用。至于documentation 所说,返回的本机类型的值是:

    boolstringlongdoubleIDictionary{string, object}List{object}

    如果您正在接收数据但loadedDict 为空,您需要编写将IDictionary{string, object} 转换为Dictionary&lt;string, List&lt;List&lt;string&gt;&gt;&gt; 的方法并填写您的信息。

    我没有将firebase与unity一起使用,仅在Web项目中使用,所以我不确定这是否可能是您的问题,这只是我的猜测。我很乐意检查您的发现

    【讨论】:

    • 感谢您回答有关您的问题,数据已正确保存,var is DataSnapshot { key = Users, value = System.Collections.Generic.Dictionary`2[System.String,System.Object ] } 问题是转换,我还不知道怎么做,但研究得不好。
    • 这不是你问题的答案吗?
    • 不,我需要一个包含字符串列表的列表字典
    • 如果你已经知道了,那么你应该直接根据这一点提出问题。您的问题与 firebase 无关...
    • 这是一个c#问题,如何将你得到的对象转换成你想要的类型,与firebase无关,也与unity无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2021-09-26
    • 2018-02-06
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多