我对使用解析iOS SDK的PFQuery
提出了疑问。
我在解析className geoPoints
时有几个SpotList
数据。在其中,有两列,即SpotName
和SpotLocation
。
检索数据后,我尝试将其println(self.SpotNames)
打印在四个不同的位置(请参阅下面的代码中的注释)。
我的问题是,如果我在位置4中[]
,我为什么会得到一个空数组println
?同时,我可以通过在位置1,2和3中执行println
来获取整个数据。此外,是否有任何方法可以在位置4中获取整个数据?
谢谢你的帮助!
var SpotNames = [String]()
var SpotGeoPoints = [PFGeoPoint]()
var SpotLocationLatitudes = [CLLocationDegrees]()
var SpotLocationLongitudes = [CLLocationDegrees]()
var SpotLocations = [CLLocationCoordinate2D]()
override func viewDidLoad() {
super.viewDidLoad()
var query:PFQuery = PFQuery(className: "SpotList")
query.orderByAscending("SpotName")
query.findObjectsInBackgroundWithBlock{ (objects:[AnyObject]! , error:NSError!)-> Void in
if !(error != nil){
for object in objects! {
self.SpotNames.append(object["SpotName"] as String)
self.SpotGeoPoints.append(object["SpotLocation"] as PFGeoPoint)
self.SpotLocationLatitudes.append(self.SpotGeoPoints.last?.latitude as CLLocationDegrees!)
self.SpotLocationLongitudes.append(self.SpotGeoPoints.last?.longitude as CLLocationDegrees!)
// location 1
}
// location 2
}
// location 3
}
// location 4
}
答案 0 :(得分:1)
由于findObjectsInBackgroundWithBlock
是一个异步方法,它会立即返回。
因此,当您到达位置4时,您可能会获得一个空数组。如果你真的想在那里得到结果,请使用同步版本findObjects
,但是在主线程上做大量工作总是不太好。