2015-09-04 52 views
0

我正在使用Parse解析數據庫。變量沒有被保存在關閉之外

問題:我正在查詢數據庫並保存一個對象,但它似乎沒有保存在查詢函數之外。我認爲這是因爲我需要刷新一個變量或其他東西,但我不知道該怎麼做。

相關代碼:

class AddClassViewController: UIViewController { 

var classroom = Classroom() 

var checkClassList: [Classroom] = [] 

@IBAction func enrollClassButton(sender: AnyObject) { 
    self.classroom.classCode = classCodeText.text.uppercaseString 
    self.classroom.year = yearText.text 
    self.classroom.professor = professorNameText.text 

    ClassListParseQueryHelper.checkClass({ (result: [AnyObject]?,error: NSError?) -> Void in 
     self.checkClassList = result as? [Classroom] ?? [] 
     //count is 1 inside here 
     println(self.checkClassList.count) 
     }, classCode: self.classroom.classCode!) 

    //count is 0 out here 
    println(self.checkClassList.count) 


} 

//this gets class with matching classcode 
static func checkClass(completionBlock: PFArrayResultBlock, classCode: String){ 
    let query = PFQuery(className: "Classroom") 
    query.whereKey("ClassCode", equalTo: classCode) 
    query.findObjectsInBackgroundWithBlock(completionBlock) 
} 
+0

你並不需要 「刷新變量」(知道是什麼意思)。您錯過了正在進行*異步*調用的事實。與其給你一個直截了當的答案,我建議你閱讀一下關於異步編程以及如何在Swift中處理它。 – Roshan

+0

哇,我完全忽略了這一點。這應該是解決方案。謝謝! –

+0

我的榮幸。由於我沒有提供具體的解決方案,我建議你自己提出確切的解決方案。 :) – Roshan

回答

0

這是我如何解決了這個:

class ClassListParseQueryHelper{ 
//this gets class with matching classcode 
static func checkClass(classCode: String) -> [PFObject]{ 
    let query = PFQuery(className: "Classroom") 
    query.whereKey("ClassCode", equalTo: classCode) 
    var test = query.findObjects() as! [PFObject] 
    return test 
} 

self.checkClassList = ClassListParseQueryHelper.checkClass(self.classroom.classCode!) as! [Classroom]