我的第一个iOS应用需要进行多次Parse调用,以使用自定义tableviewcell填充tableview。我无法理解这种方法。我希望有人熟悉这样的Parse任务。 我只查询一个类: 类对象包含属性“类别”,“图像”,“喜欢”和“位置”。给出了8个类别。 我的目标是用给定的类别填充表格视图,其中每个单元格显示geoPoint距离内每个单独类别的最喜欢对象的图像。如果类别不包含对象,则显示占位符图像。我也会使用PFTableView子类,但我不知道如何让所有这些查询在queryForTable()中工作。
更新:
private func queryCategories() {
let entry = homeCategories.categories
self.categoryArray.removeAllObjects()
self.overallCount = 0
let loadingNotification = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
loadingNotification.labelText = Constants.Notifications.LoadingNotificationText
PFGeoPoint.geoPointForCurrentLocationInBackground { (geoPoint: PFGeoPoint?, error: NSError?) in
for (index, cat) in entry.enumerate() {
let query = Tip.query()
query!.whereKey("category", equalTo: entry[index].category)
query!.whereKey("location", nearGeoPoint: geoPoint!, withinMiles: self.miles)
query!.countObjectsInBackgroundWithBlock({ (count: Int32, error: NSError?) in
if (error == nil) {
print("\(index): \(cat)")
let number = Int(count)
entry[index].tipCount = number
self.overallCount += number
}
else {
NSLog("Count request failed - no objects found")
}
})
let categoryQuery = Tip.query()
categoryQuery!.whereKey("category", equalTo: entry[index].category)
categoryQuery!.whereKey("location", nearGeoPoint: geoPoint!, withinMiles: self.miles)
categoryQuery!.orderByDescending("likes")
categoryQuery!.getFirstObjectInBackgroundWithBlock({ (object: PFObject?, error: NSError?) in
if (error == nil) {
if let object = object {
self.categoryArray.addObject(object)
}
self.doTableRefresh()
}
else {
self.categoryArray.addObject(entry[index])
self.doTableRefresh()
}
loadingNotification.hide(true)
})
}
}
}
private func doTableRefresh() {
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
我不确定这种做法。它确实有效但显示出一些奇怪的行为。似乎for循环和重新加载表存在问题(因为异步?)。查询不符合,因为每次尝试都会产生不同的结果。谢谢你的帮助!