当我尝试将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 []
}
答案 0 :(得分:0)
这很可能是因为阵列尚未填充,因为它在后台运行。您可以尝试使用dispatch_group
来解决此问题。
答案 1 :(得分:0)
我认为您误解了 findInBackground 的含义。这意味着回调继续执行后的代码,所以它调用 query.findInBackground .... ,然后继续下一行,即 print(self.qArray)。在稍后的某个时刻,它会从数据库中回来并执行Callback中的所有代码,这是最终填充数组的时候。