我是Swift和Parse的新手。 我正在使用PFQueryTableViewController,我想要呈现的对象是一个数组。表视图现在显示了indexPath.row = 0的Array的第一个元素。 但是当我覆盖PFQueryTableViewController并返回3时,我收到一个错误。 如果计数有效,是否可以从cellForRowAtIndexPath传递"朋友"具有全局变量的数组?
queryForTable:
override func queryForTable() -> PFQuery {
var query : PFQuery = PFUser.query()!
var result = query.whereKey("username", equalTo: PFUser.currentUser()!.username!)
return result
}
的cellForRowAtIndexPath
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")
}
if let friends = object?["friends"] as? NSArray {
cell?.textLabel?.text = friends[indexPath.row] as? String
}
return cell
}
//可选numberOfRowsInSection
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
答案 0 :(得分:0)
最佳做法是让您的numberOfRowsInSection返回您正在显示的集合的计数。见下文:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return currentUser!.friends?.count
}
如果你的tableView一次只显示一个用户的“朋友”,那么你应该为你正在查看朋友的PFUser提供一个类变量。您的tableView numberOfRowsInSection应如上所示。如果你这样做,你的代码:
if let friends = object?["friends"] as? NSArray {
cell?.textLabel?.text = friends[indexPath.row] as? String
}
简单地变成:
cell?.textLabel?.text = currentUser!.friends[indexPath.row] as? String