2014-10-28 4 views
1

나는 Parse에서 설정 한 숫자를 반환하는 대신 함수의 시작 부분에서 선언 한 0을 왜 신속하게 반환하는지 파악하려고합니다. num = (object["numOfSubmittedPhotos"] as Int) 나는 그것이 Int 인 내가 볼 수있는 테스트 라인을 인쇄 을 무효화하는 컨버터블하지 않다는 오류가 발생 (object["numOfSubmittedPhotos"] as Int)을 반환 할 때 : 대기하지 않는 것이 것처럼 Parse에서 값을 반환하는 Swift는 값을 반환 할 수 있습니다.

func getPhotosSubmitted(quest: String) -> Int{ 
    var num = 0 
    var query = PFQuery(className:"Quest") 

    query.whereKey("questName", equalTo:quest) 

    query.findObjectsInBackgroundWithBlock { 

     (objects: [AnyObject]!, error: NSError!) -> Void in 

     if error == nil { 

      // The find succeeded. 

      // NSLog("Successfully retrieved \(objects.count) scores.") 

      // Do something with the found objects 

      for object in objects { 

       num = (object["numOfSubmittedPhotos"] as Int) 

       println("---\(num)") 
      } 
     } else { 
      // Log details of the failure 
      //NSLog("Error: %@ %@", error, error.userInfo!) 
     } 
    } 

    return num 
} 

이 FUNC 0 매번를 반환합니다 Parse에서 얻는 값은 0이고 올바른 값은 0이 아닙니다. 누구든지이 코드에서 문제가 발생합니까?

+0

질문 제목은 이미 문제를 제안합니다. 함수 반환 _before_ 구문 분석 값을 얻을 수 있습니다. 당신은 그것을 재 설계해야만합니다 –

+0

어떻게 그렇게 할 수 있습니까? 값을 얻을 때까지 기다렸다가 변수 num에 삽입하여 대부분의 언어로 돌아 오기로했습니다. – user3290950

+0

'findObjectsInBackgroundWithBlock'는이 메소드 이름이 당신에게 뭔가를 말하고 있습니까? 비동기 프로그래밍을하는 방법을 배워야합니다. –

답변

0

query.findObjects ...는 일주일에 실행할 블록을 만듭니다. 그 직후, 당신은 num을 반환합니다. 그건 지금 일어난 일입니다.

getNumberOfPhotos는 향후에만 사용할 수있는 값을 반환하므로 비동기 호출이어야합니다. 즉, 미래에 실행될 블록이나 그와 비슷한 것이 반환이되어야 함을 의미합니다.

누군가가 말했듯이, iOS에서 비동기식을 읽는 하루를 보내고 다른 방법과 반대되는 블록에 집중하십시오.

관련 문제