我正在查询当前用户的用户名的Parse类。 class列名为 Attendants ,数组肯定包含用户名。运行代码时,不会填充表,也不会抛出任何错误。
有人能够指出我做错了什么吗?
必要的代码如下所示:
class EventsViewController: PFQueryTableViewController{
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// Configure the PFQueryTableView
self.parseClassName = "Event"
self.textKey = "username"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {
var query = PFQuery(className: "Event")
var tempname = PFUser.currentUser().username
NSLog(tempname)
query.whereKey("Attendants", equalTo: tempname)
return query
}
//override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! PFTableViewCell!
if cell == nil {
cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.selectionStyle = UITableViewCellSelectionStyle.None
}
// Extract values from the PFObject to display in the table cell
cell?.textLabel?.text = object["EventName"] as! String!
cell?.detailTextLabel?.text = object["EventName"] as! String!
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
var detailScene = segue.destinationViewController as! EventDetailViewController
// Pass the selected object to the destination view controller.
if let indexPath = self.tableView.indexPathForSelectedRow() {
let row = Int(indexPath.row)
detailScene.currentObject = objects[row] as? PFObject
}
}
override func viewDidAppear(animated: Bool) {
// Refresh the table to ensure any data changes are displayed
tableView.reloadData()
}
}
答案 0 :(得分:0)
您需要做的就是编写queryForTable()
函数。
永远不会调用所有的tableView函数。
所以关于这一点就是解决方案:
class EventsViewController: PFQueryTableViewController {
override init(style: UITableViewStyle, className: String?) {
super.init(style: style, className: className)
self.textKey = "YOUR_PARSE_COLOMN_YOU_WANT_TO_SHOW"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
required init!(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override func queryForTable() -> PFQuery {
var query = PFQuery(className: "Event")
var tempname = PFUser.currentUser()!.username
NSLog(tempname!)
// This is really ugly.. Please do this via Pointer and not via String.
query.whereKey("Attendants", equalTo: tempname!)
return query
}
}
如果要使用自定义单元格,则需要创建自己的TableViewController并在TableViewController本身上实现逻辑。
此代码在Xcode 6.3(swift 1.2)
中进行测试
请记住,您需要从代码中初始化tableViewController,例如:
var eventsvc = EventsViewController(style: .Plain, className: "Event")
将它从viewcontroller中呈现出来:
self.presentViewController(eventsvc, animated: true, completion: nil)
如果您想在故事板see this
中使用它