我正在与Parse一起将数据加载到UITableViewController上,但是由于某种原因,即使我知道数据正在通过并正在保存,也没有任何信息。问题在于它没有在表viewcontroller中显示。这是我的代码。

import UIKit
import Parse
import ParseUI

class AvailableNearbyViewController: UITableViewController, UITableViewDataSource {

    var listOfClassFullNames: [String] = [String]()
    var totalNumberOfRows: Int = 0
    var query = PFQuery(className:"Classes")

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listOfClassFullNames.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        cell.textLabel?.text = self.listOfClassFullNames[indexPath.row]
        return cell

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        query.orderByAscending("classFullName")
        query.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]?, error: NSError?) -> Void in

            if error == nil {
                // The find succeeded.
                self.totalNumberOfRows = objects!.count
                println("totalNumberOfRows = \(self.totalNumberOfRows)")
                println("Successfully retrieved \(objects!.count) objects.")

                if let objects = objects as? [PFObject] {
                    for object in objects {
                        println(object.objectForKey("classFullName"))
                        self.listOfClassFullNames.append(object.objectForKey("classFullName") as! String)
                    }
                }

            }

        }
    }
}

最佳答案

从parse.com下载完数据后,您需要重新设置表视图:

  if error == nil {
        // The find succeeded.
        self.totalNumberOfRows = objects!.count
        println("totalNumberOfRows = \(self.totalNumberOfRows)")
        println("Successfully retrieved \(objects!.count) objects.")

        if let objects = objects as? [PFObject] {
            for object in objects {
                println(object.objectForKey("classFullName"))
                self.listOfClassFullNames.append(object.objectForKey("classFullName") as! String)
            }
        }
        dispatch_async(dispatch_get_main_queue()) {
            self.tableView.reloadData()
        }
    }


现在,一旦您下载完新数据,它将开始显示在表格中。

因为函数的名称(findObjectsInBackgroundWithBlock)可能是为了安全起见而在另一个线程中进行更新,所以我更新了代码以将更新消息发送到主线程。

关于ios - UITableViewController不显示任何数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30766940/

10-10 08:58
查看更多