我有一个奇怪的问题。下面的代码块放在第一个View Controller的viewDidAppear部分中,当它运行时,println(latArray),println(longArray),println(addressArray),都不返回任何值。在控制台中,它为所有三个数组返回[]。但是,当我转到另一个视图控制器并返回时,它将填充来自Parse的数据。为什么是这样?当第一次使用viewWillAppear方法加载应用程序时,为什么不会使用latArray,longArray和addressArray填充?
var query = PFQuery(className: "NewLog")
// Add a where clause if there is a search criteria
query.whereKey("Type", containsString: newRecordCreated)
println(query)
query.findObjectsInBackgroundWithBlock({
(objects, error) -> Void in
if error == nil {
// Results were successfully found
if let objects = objects as? [PFObject] {
for object in objects {
//println(object["follower"])
latArray.append(object["Lat"] as! Double)
longArray.append(object["Long"] as! Double)
addressArray.append(object["Address"] as! String)
}
}
// self.tableView.reloadData()
} else {
println("error")
// The network was inaccessible and we have no cached data for
// this query.
}
})
println(latArray)
println("^^Latitude values")
println(longArray)
println("^^Longitude values")
println(addressArray)
println("^^Address values")
}
答案 0 :(得分:1)
查询正在后台执行。块(闭包)中的代码在查询完成时执行。注意:这可能是viewDidAppear
完成后很可能。如果在for循环之后放置print语句,则应该看到值。如果取消注释reloadData
方法,则在查询完成时应使用新信息更新表。