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

时间:2015-03-17 02:48:01

标签: ios swift xcode6

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

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

    var myVariable:String?

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

    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)")
        }
    
    }
    
  3. 到目前为止,函数内的println返回了我的值!大

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

      override func viewDidLoad() {
                super.viewDidLoad()
    
                self.retrieveData()
    
                // The myVariable value should change
    
                println("My new value =\(self.myVariable)")
    
            }
    

    感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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