首页 文章

Swift - 使用parse.com发布变量范围

提问于
浏览
0

自从Swift调用parse.com课程2天以来,我一直在努力解决问题 .

  • 我在UIViewController类的根目录中声明了一个变量

var myVariable:String?

  • 我创建了一个函数来调用数据库并返回一个值

func retrieveData(){

// Create the query
    var queryTest:PFQuery = PFQuery(className: "myClasseName")

    // Where clause
    queryTest.whereKey("columnName", equalTo: "someText")

    queryTest.getFirstObjectInBackgroundWithBlock { (myParseObject:PFObject!, errreur: NSError!) -> Void in

        self.myVariable = myParseObject["nameOfColumnOfContainerTheValueToBeReturned"] as? String

        println("valeurTest dans la BD = \(self.myVariable)")
    }

}

到目前为止,函数内的println返回了我的值!大

当我在viewDidLoad中调用我的函数时,问题就开始了 . 我想通过调用retrieveData()函数来更改myVariable的值 . 但是,变量值不会改变!

override func viewDidLoad() {
            super.viewDidLoad()

            self.retrieveData()

            // The myVariable value should change

            println("My new value =\(self.myVariable)")

        }

谢谢你的帮助!

1 回答

  • 0

    getFirstObjectInBackgroundWithBlock 是异步的(即它在后台线程上执行),因此在访问该值之前必须等待它完成 . 在调用 getFirstObjectInBackgroundWithBlock 's method, you'之后尝试立即打印,尝试打印尚未检索的变量,因为 getFirstObjectInBackgroundWithBlock 没有足够的时间来获取数据 .

    在您的第一个代码块中, self.myVariable 能够成功打印,因为它在块内执行,因此在获取完成后 .

相关问题