我正在查询从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?谢谢!
答案 0 :(得分:0)
我在Android中有类似的问题,我不知道它是否可以提供帮助,但在我的情况下,这是因为查询是在后台完成的,所以它不等待查询完成,所以数据不会像预期的那样出现,我通过不在后台使用查询而不是使用“普通”查询来解决它,在Android中是这样的:
ParseQuery<ParseObject> resultsitems = ParseQuery.getQuery("ClassName").whereEqualTo ("Column", x);
try {
objects=resultsitems.find();
} catch (ParseException e) {
e.printStackTrace();
}
我不知道IOS的Parse是如何工作的,但我的猜测是类似的,所以尝试搜索正确的语法,希望它能按你的意愿工作。