Parse中的查询类(swift)

时间:2015-07-18 02:12:00

标签: ios swift parse-platform

我有一个奇怪的问题。下面的代码块放在第一个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")
}

1 个答案:

答案 0 :(得分:1)

查询正在后台执行。块(闭包)中的代码在查询完成时执行。注意:这可能是viewDidAppear完成后很可能。如果在for循环之后放置print语句,则应该看到值。如果取消注释reloadData方法,则在查询完成时应使用新信息更新表。