【问题标题】:Variable not being saved outside closure变量没有被保存在闭包之外
【发布时间】:2015-09-04 23:23:33
【问题描述】:

我正在使用 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)
}

【问题讨论】:

  • 您不需要“刷新变量”(无论这意味着什么)。您错过了进行 asynchronous 调用的事实。与其给你一个直截了当的答案,我建议你阅读一些关于异步编程以及它在 Swift 中的处理方式。
  • 哇,我完全忽略了这一点。这应该是解决方案。谢谢!
  • 我的荣幸。由于我没有给出具体的解决方案,我建议你自己提出确切的解决方案。 :)
  • 还是不知道解决办法...不知道如何从query.findObjects()中获取数据结果。我只知道如何使用异步方法

标签: swift parse-platform closures


【解决方案1】:

这就是我解决这个问题的方法:

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多