Я получаю ID пользователя (int64) из JSON, а затем передаю их в функцию для заполнения пользовательских данных.Однако значение идентификатора JSON я получаю, как только я передаю его через функцию iEnumerator.Любая идея, почему это происходит?
Я напечатал значения и точно знаю, что они являются ожидаемыми значениями JSON, прежде чем передать их.
Я получаю идентификаторы с GetTeachersStudentList
и передаю их в PopulateStudentGamesAndTutorial
.Словари, которые я использую для хранения идентификаторов и данных, инициализируются непосредственно перед вызовом GetTeachersStudentList
.
IEnumerator GetTeachersStudentList()
{
//get user information from server call
Dictionary<string, string> headers = new Dictionary<string,string>();
headers.Add("Access-Token", PlayerData.accessToken);
string url = studentURL += "?staffId=" + PlayerData.currentUser.staffId;
WWW www = new WWW(url, null, headers);
yield return www;
StudentListWebResponse = www.text;
PlayerData.studentList = StudentListWebResponse;
//parse json
JSONArray students = (JSONArray) JSON.Parse(StudentListWebResponse);
expectedStudentsToPopulate = students.Count;
//populate each users data
for (int i = 0; i < students.Count; i++)
{
string userInformation = students[i].ToString();
JSONObject studentJsonObject = (JSONObject) JSON.Parse(userInformation);
foreach (var item in studentJsonObject)
{
//look for id, then use that id to populate user data
if (item.Key == "id")
{
StartCoroutine(PopulateStudentGamesAndTutorial(item.Value));
}
}
}
PlayerData.control.Save();
}
IEnumerator PopulateStudentGamesAndTutorial(Int64 id)
{
//get games with id
Dictionary<string, string> headers = new Dictionary<string,string>();
headers.Add("Access-Token", PlayerData.accessToken);
string studentGameURL = serverManager.GamesURL(id);
WWW gamesWWW = new WWW(studentGameURL, null, headers);
yield return gamesWWW;
PlayerData.StudentListWithGames.Add(id, gamesWWW.text);
//get tutorials with id
string tutorialURL = serverManager.TutorialURL(id);
WWW wwwGetTutorialsCompleted = new WWW(tutorialURL, null, headers);
yield return wwwGetTutorialsCompleted;
JSONArray tutorialArray = (JSONArray) JSON.Parse(wwwGetTutorialsCompleted.text);
List<int> tutorialIDList = new List<int>();
for (int i = 0; i < tutorialArray.Count; i++)
{
tutorialIDList.Add(tutorialArray[i]["id"]);
}
PlayerData.StudentListWithTutorials.Add(id, tutorialIDList);
PlayerData.control.Save();