Parse 서버의 데이터가있는 변수를 클래스 바로 아래에 선언 된 변수로로드하는 쿼리가 몇 개 있습니다. 쿼리 함수 내에서 변수를 인쇄 할 때 올바르게 인쇄되지만 함수 외부에서 호출하거나 인쇄 할 때 변수는 비어 있습니다. 내가 잘못 가고있는 어떤 생각?변수가 클래스 뒤에 선언 된 경우에도 쿼리 함수 밖의 변수에 액세스 할 수 없습니다.
변수 선언 :
class AddTaskViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
var varCost = ""
쿼리로드 변수 : 내가 옵션 1을 인쇄 할 때
let varCostQuery = PFQuery(className: "Class1")
varCostQuery.findObjectsInBackground(block: { (objects, error) in
if error != nil {
print(error!)
} else {
varCostQuery.whereKey("Header", equalTo: self.HeaderSelection.text)
varCostQuery.findObjectsInBackground(block: { (objects, error) in
for object in objects! {
self.varCost = object["pricePerUnit"] as! String
print(self.varCost) //Option1
}
})
}
})
print(varCost) //Option2
, 나는 내가 찾고 정확히 같은 데이터를 얻을,하지만 난 옵션 2를 인쇄 할 때 또는 시도 이 레벨에서 varCost
변수를 사용하면 변수가 결코 업데이트되지 않은 것처럼 ""
이됩니다.
아, 맞아. 어떤 권고 사항을 고치는 방법? 최종 쿼리 이후에 1 초의 시간을 들여서 변경 작업을 수행 할 수 있으며 UX에 너무 많은 영향을 미치지는 않을 것입니다. 그러나 더 나은 옵션을 고려해 보면 기쁠 것입니다. – tmcgee
@ tmcgee 1 초의 포즈를 취하는 것은 좋은 습관이 아닙니다. 왜냐하면이 물체 발견이 얼마나 오래 걸릴지 모르기 때문입니다. 블럭 안의 매개 변수로'self.varCost'를 가진 함수를 호출하는 것이 더 좋을 것입니다, 그래서 당신은이 함수 내에서'self.varCost'로 원하는 것을 할 수 있습니다, 그리고 당신은 ** 100 % 확실합니다 ** 그것은 올바른 값입니다. –
예제에 대한 링크가 있습니까? 정적 인 일시 중지보다 훨씬 나은 접근 방식과 비슷합니다. 일시적으로 문제를 해결할 수 있는지 알아보기 위해 일시 중지를 시도했지만 여전히 인쇄하고 있습니다. : / – tmcgee