我正在与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/