将数组从Parse存储到本地数组

时间:2016-05-04 00:56:32

标签: arrays swift parse-platform

当我尝试将Parse中的数组存储到本地数组时,我只能在findObjectsInBackgroundWithBlock {...}内访问它。当我在该块之外打印时,它会显示[] ...

代码:

var qArray : [[Int]] = []

override func viewDidLoad() {
    super.viewDidLoad()

    let query = PFQuery(className: "Trivia")
    query.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error: NSError?) in
        if objects != nil {
            if let objects = objects {
                for object in objects {
                    self.qArray.append(object["mainPattern"] as! [Int])
                }
                print(self.qArray) // Prints a multi dimension array
            }
        }
        if error != nil {
            print(error)
        }
    }
    print(self.qArray) // prints []
}

2 个答案:

答案 0 :(得分:0)

这很可能是因为阵列尚未填充,因为它在后台运行。您可以尝试使用dispatch_group来解决此问题。

答案 1 :(得分:0)

我认为您误解了 findInBackground 的含义。这意味着回调继续执行后的代码,所以它调用 query.findInBackground .... ,然后继续下一行,即 print(self.qArray)。在稍后的某个时刻,它会从数据库中回来并执行Callback中的所有代码,这是最终填充数组的时候。