Как сохранить массив в Firebase через Unity SDK - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь сохранить массив Int32 [] и bool [] в Firebase, но он не работает для меня. Я искал в разных местах, но не смог найти решение. Может кто-нибудь сказать мне, как можно хранить массив для БД Firebase в реальном времени из Unity.

Я использую System.Reflection, чтобы получить все открытые статические поля класса UserPrefs.

Вот код, я пытаюсь сделать эту работу ...

        System.Type type = typeof(UserPrefs);
        FieldInfo[] fields = type.GetFields();
        foreach (var field in fields) {
            if (user != null)    
        dbReference.Child("users").Child(user.UserId).Child(field.Name).SetValueAsync(field.GetValue(null));
            else
                    Debug.LogError("There is no user LoggedIn to write...");
        }

Выше кода сохраняет все значения, кроме массивов. Ошибка в массивах следующая:

InvalidCastException: невозможно преобразовать тип источника к месту назначения. тип. Firebase.Database.Internal.Utilities.Validation.ValidateWritableObject (Объект System.Object)

Любая помощь будет высоко ценится ...

Ответы [ 2 ]

0 голосов
/ 21 июля 2019

Для более общего решения вы можете скопировать класс JsonHelper, который был предложен здесь .

Пример использования:

string jsonArray = JsonHelper.ToJsonArray(mySerializeableList);
var nodeToUpdate = this.dbReference.Child("wantedNode");
nodeToUpdate.SetRawJsonValueAsync(jsonArray);
0 голосов
/ 06 ноября 2018

Тебе нужен такой класс.

public class MyClass
{
    public int[] intArray = new int[10];
}

Затем вы можете записать этот объект в Firebase следующим образом.

public void WriteArrays()
{
    MyClass temp = new MyClass();

    for (int i = 0; i < temp.intArray.Length; i++)
    {
        temp.intArray[i] = i;
    }

    databaseReference.Child("MyArrayNode").SetRawJsonValueAsync(JsonUtility.ToJson(temp));
}

databaseReference - это ссылка на ваш корень.

Точно так же вы можете сделать это и для bool [] .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...