如何将Parse数据放入数组

时间:2016-01-28 15:22:43

标签: arrays swift parse-platform

我需要使用查询将数据放入数组中,但它只能在块中使用。我在这里搜索并发现它是因为findObjectsInBackgroundWithBlock是异步的,但是我怎么能让它同步呢?

var cities = [String]()

func loadCityArray() {

    let citiesVisited = PFQuery(className: "Trips")
    citiesVisited.whereKey("userId", equalTo: (PFUser.currentUser()?.objectId)!)

    citiesVisited.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if let objects = objects {
            for object in objects {
               let city = object["cityId"] as! String

                let query = PFQuery(className: "Cities")
                query.whereKey("objectId", equalTo: city)
                query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
                    if let objects = objects {
                        for object in objects {
                            self.cities.append(object["cityName"] as! String)
                        }
                   }
                })
            }
        }

1 个答案:

答案 0 :(得分:0)

您不希望在主线程上进行同步。强烈建议不要这样做。

您希望在实例变量中存储请求所需的内容,并告知相应的View Controller新值存在于块中。

修改

假设您有一个等待使用数据的对象:

var chart : DataConsumer?

在您获取数据的块中,

chart.useData(data)

编辑2

useData函数应跟踪数据集中的更改并使用新数据到达的信息。例如,通过显示它。