Хорошо, моя проблема в том, что после ".... ContinueWith (task => ..." 'j' станет прямо равным переменной count. Почему это происходит и как ее решить?
Это потому, что вы использовали <=
вместо <
. С <=
, j
должно быть равно count
для выполнения условия цикла и его завершения. Если вы хотитеj
будет меньше count
, затем используйте count-1
или просто используйте <
.
Так, это должно быть
for (int j = 1; i <= count-1; j++)
Или
for (int j = 1; i < count; j++)
Обратите внимание, что массив начинается с 0, а не с 1, поэтому int j = 1;
должно быть int j = 0;
, но у меня такое ощущение, что вы хотели это сделать, и вы специально запускаете цикл с 1
.
Наконец, еще одна проблема - захват вашей переменной в цикле, потому что вы используете лямбду в функции ContinueWith
. Дополнительную информацию смотрите в этом сообщении. Использование переменной j
внутри ContinueWith
лямбда-функция, сделайте ее копию, затем используйте эту копию вместо переменной j.
db.Child("Some Child").GetValueAsync().ContinueWith(task =>
{
//MAKE A COPY OF IT
int jCopy = j;
Debug.Log("j: " + jCopy); // Here the Debug will show me that j = count
}
Завершено исправлено cода:
for (int j = 1; i < count; j++)
{
db.Child("Some Child").GetValueAsync().ContinueWith(task =>
{
//MAKE A COPY OF IT
int jCopy = j;
Debug.Log("j: " + jCopy);
if (task.IsFaulted)
{
// ERROR HANDLER
}
else if (task.IsCompleted)
{
// Some Code Here
}
});
}