Tableview在Swift中查看多个Parse查询和约束

时间:2016-07-09 19:02:25

标签: swift parse-platform tableview tableviewcell

我的第一个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循环和重新加载表存在问题(因为异步?)。查询不符合,因为每次尝试都会产生不同的结果。谢谢你的帮助!

0 个答案:

没有答案