如何从parse.com保留检索到的数据,但是在findObjectsInBackgroundWithBlock {}之外?

时间:2014-11-30 12:40:46

标签: ios swift parse-platform pfquery

我对使用解析iOS SDK的PFQuery提出了疑问。

我在解析className geoPoints时有几个SpotList数据。在其中,有两列,即SpotNameSpotLocation

检索数据后,我尝试将其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
}

1 个答案:

答案 0 :(得分:1)

由于findObjectsInBackgroundWithBlock是一个异步方法,它会立即返回。 因此,当您到达位置4时,您可能会获得一个空数组。如果你真的想在那里得到结果,请使用同步版本findObjects,但是在主线程上做大量工作总是不太好。