用解析查询太慢了

时间:2015-12-12 20:35:06

标签: ios swift uitableview parse-platform

我正在查询从Parse中检索一些数据,我在一个名为Exercise的外部类中查询,而不是在tableViewController中,代码如下:

// LOAD
var arrayExercise:[Exercise] = [Exercise]()


func loadAll() -> [Exercise] {

    // Esercizio di load
    let exerciseName:Exercise = Exercise()
    let query = PFQuery(className:"Exercise")
    query.whereKey("username", equalTo:(PFUser.currentUser()?.username)!)


    query.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error: NSError?) -> Void in
        if error == nil {
            // The find succeeded.
            print("Successfully retrieved \(objects!.count) scores.")
            // Do something with the found objects
            if let objects = objects {
                for object in objects {

                    // Add the name of the Exercise into the array
                    let text:String? = (object )["name"] as? String

                    exerciseName.setNome(text!)

                    self.arrayExercise.append(exerciseName)
                }
            }
        } else {
            // Log details of the failure
            print("Error: \(error!) \(error!.userInfo)")
        }
    }
    return arrayExercise
}

在TableViewController中我在viewDidLoad中调用此方法,但我注意到在查询完成之前tableView加载并且结果为空!我试图将tableView.reloadData()添加到查询中,但它不起作用!如何加载查询然后显示tableView?谢谢!

1 个答案:

答案 0 :(得分:0)

我在Android中有类似的问题,我不知道它是否可以提供帮助,但在我的情况下,这是因为查询是在后台完成的,所以它不等待查询完成,所以数据不会像预期的那样出现,我通过不在后台使用查询而不是使用“普通”查询来解决它,在Android中是这样的:

    ParseQuery<ParseObject> resultsitems = ParseQuery.getQuery("ClassName").whereEqualTo ("Column", x);

    try {
        objects=resultsitems.find();
    } catch (ParseException e) {
        e.printStackTrace();
    } 

我不知道IOS的Parse是如何工作的,但我的猜测是类似的,所以尝试搜索正确的语法,希望它能按你的意愿工作。