Итерация по DataSnapShot.Children останавливает выполнение кода (Unity, Firebase)

SQL-сервер 2016 поддерживает json data синтаксический анализ с использованием OPENJSON. Вы можете использовать OPENJSON для сопоставления json data с строками и столбцами.

Ваш json Data

[
 { "id" : 2,"name": "John"},
 { "id" : 5,"name": "John"}
]

Вот как вы можете обрабатывать json в sql

//@pJson is json data passed from code.  

INSERT INTO YourTable (id, Name)
 SELECT id, name
 FROM OPENJSON(@pJson)
 WITH (id int,
       name nvarchar(max))

Здесь - подробная статья, посвященная этой теме.

0
задан Faizan Khan 19 March 2019 в 01:04
поделиться

1 ответ

Я как-то сделал обходной путь, чтобы исправить это. На самом деле SnapShot.Children (от Firebase Unity SDK) имеет IEnumerable. Тип. Я искал в интернете итерации IEnumerable коллекций. И затем заменил мой код из этого:

else if (task.IsCompleted) {
        DataSnapshot snapshot = task.Result;
        // Do something with snapshot...
                    foreach(DataSnapshot s in snapshot.Children){
                    IDictionary dictUsers = (IDictionary)s.Value;   
                    Debug.Log(dictUsers["displayName"]);                    
                }   
                // After this foreach loop in snapshot.Children, nothing executes
                UIManager.instance.ShowOtherUsers();
        }

На это:

else if (task.IsCompleted)
        {
            DataSnapshot snapshot = task.Result;
                // Do something with snapshot...

            using (var sequenceEnum = snapshot.Children.GetEnumerator())
            {
             for(int i = 0 ;i<snapshot.Children.Count();i++){
                while (sequenceEnum.MoveNext())
                {
                  try{
                      IDictionary dictUser =(IDictionary)sequenceEnum.Current.Value;

                      Debug.Log("displayName:"+dictUser["displayName"]);

                    }
                    catch(System.Exception e){
                        Debug.Log(e.Message);
                    }
                    Debug.Log("At The End!");
                UIManager.instance.ShowOtherUsers(); // Now it executes like a Charm 


         }

Это работало как Очарование ... Что я понимаю, что это выполнение было сделано с резьбой Задача». Хотя я не знаю точно, как это работает или почему это не работает с моим предыдущим кодом. Кто-то, кто может предоставить лучшую информацию, приветствуется :) Ура!

0
ответ дан Faizan Khan 19 March 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: