Así que estoy guardando mi diccionario así:
public void saveData() { database.Child("Users").Child("User").SetValueAsync(shoppingList); }Pero si quiero cargar mi diccionario, siempre devuelve nulo cuando quiero acceder a algo. Lo cargo así:
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); } }); }Creo que lo que podría estar sucediendo es que var loadedDict = result.Value as Dictionary<string, List<List<string>>>; no está haciendo la conversión de inmediato.
Yo revisaría lo siguiente.
1.- Que los datos estén siendo guardados correctamente en la etapa de guardar, y almacenados en la base de datos y confirme eso en la pregunta.
2.- Incluso el diccionario es nulo, verifica si los datos devueltos por la tarea son nulos. Porque es posible que los datos se estén recuperando en var result = task.Result; , pero la conversión al diccionario no funciona. También lo confirmaría en la pregunta si ese es el caso.
3.- Si realmente se están recuperando los datos en la etapa 2, y lo que no funciona es la conversión. En lo que dice la documentación , los valores devueltos tipos nativos son:
bool , string , long , double , IDictionary{string, object} and List{object}
Si está recibiendo los datos pero el loadedDict es nulo, deberá codificar el método que convierte el IDictionary{string, object} en su Dictionary<string, List<List<string>>> con su información completa.
No utilicé Firebase con Unity, solo en proyectos web, por lo que no estoy seguro de si esto podría deberse a su problema, es solo una suposición. Estaré encantado de comprobar lo que descubras.