2015-01-26 6 views
0

내가 라벨로 구문 분석 클래스의 수를 표시하기 위해 노력하고있어에서 마지막 날 판매의 수를 검색하지만, 다음과 같은 오류가 발생 :Parse.com 연합

"CompareBaseObjectsInternal 만 메인 스레드에서 호출 할 수 있습니다 장면을로드 할 때 생성자 및 필드 초기화 프로그램이로드 스레드에서 실행됩니다. 생성자 또는 필드 초기화 프로그램에서이 함수를 사용하지 말고 초기화 코드를 Awake 또는 Start 함수로 이동하십시오. "

내 코드는 아래와 같습니다. 누구든지 나를 도울 수 있습니까?

ParseQuery<ParseObject> USQuery = ParseObject.GetQuery ("Sales") 
    .WhereEqualTo ("transactionType", "Purchase") 
    .WhereGreaterThan ("createdAt",DateTime.Now.AddDays(-1)); 

USQuery.CountAsync().ContinueWith(t => 
{ 
    int result=t.Result; 
    labelUSSale.text=result.ToString(); 
}); 
+0

입니까? 이 오류는 생성자에서이 오류가 발생했다는 것을 나타내며 대신 Start 또는 Awake 메서드로 이동해야합니다. – Dover8

답변

0

메인 스레드에서만 NGUI 라벨 값을 보낼 수 있습니다. 여기서 간단한 해결책은 "결과"변수가 변경 될 때까지 기다렸다가 label.text를 할당하는 것입니다. Tasks를 살펴 보는 것이 좋습니다. Parse.com 쿼리를 제어하는 ​​훨씬 더 친숙한 방법이 있습니다.

https://parse.com/docs/unity_guide#tasks

이 시도 : 어디에서이 코드가

IEnumerator GetSales() 
{ 
    int result = -1; 

    ParseQuery<ParseObject> USQuery = ParseObject.GetQuery ("Sales").WhereEqualTo ("transactionType", "Purchase").WhereGreaterThan ("createdAt",DateTime.Now.AddDays(-1)); 

    USQuery.CountAsync().ContinueWith(t => 
    { 
     result=t.Result; 
    }); 

    while (result == -1) yield return new WaitForSenOfFrame(); 
    labelUSSale.text=result.ToString(); 

} 
+0

답장을 보내 주신 Greg Lucksek에게 감사의 말을 전합니다. 귀하 께서 언급하신 동일한 접근 방식으로이 문제를 너무 일찍 고쳤습니다. –