Как получить список пользователей и их профильные изображения из класса Parse в Swift?
В моем приложении я пытаюсь отобразить информацию о сотруднике клуба, в котором в таблице "Кулак" перечислены клубы (из Parse Backend), после выбора клуба отображаются все сотрудники (и изображение их профиля) снова работая в этом клубе в таблице (clubdetailTableVC) и, наконец, если выбран сотрудник, то его полная информация отображается подробно vC вместе с изображением его профиля.
Если был в состоянии передать объект клуба от первого clubTableVC до clubDetailVC, но не мог идти дальше. вот мой полный код Все сотрудники (PFUser) сохраняются в классе "Пользователь", таблица Club содержит массив сотрудников (имена пользователей в виде строки).
//ClubtableVC.swift
import UIKit
class ClubsTableVC: PFQueryTableViewController {
override init(style:UITableViewStyle, className: String!){
super.init(style: style, className: className)
self.parseClassName = "Club"
self.textKey = "clubName"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func queryForTable() -> PFQuery {
var query = PFQuery(className: "Club")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
var cell = tableView.dequeueReusableCellWithIdentifier("clubCell") as! PFTableViewCell!
if cell == nil {
cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "clubCell")
}
if let clubName = object?["ClubName"] as? String {
cell?.textLabel?.text = clubName
}
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//var detailScene = segue.destinationViewController as! ClubDetailsViewController
var clubScene = segue.destinationViewController as! clubPromoterTableVC
if let indexPath = self.tableView.indexPathForSelectedRow() {
let row = Int(indexPath.row)
//detailScene.currentObject = (objects?[row] as! PFObject)
clubScene.currentObject = (objects?[row] as! PFObject)
}
}
}
//clubManagerVC.swift
class clubManagerTableVC: PFQueryTableViewController {
var currentObject : PFObject?
var usernames = [String]()
var images = [UIImage]()
override init(style:UITableViewStyle, className: String!){
super.init(style: style, className: className)
self.parseClassName = "_User"
self.textKey = "fullname_lower"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func queryForUser() -> PFUser {
var query = PFUser(className: "Club")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
var cell = tableView.dequeueReusableCellWithIdentifier("managerCell") as! PFTableViewCell!
cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "managerCell")
if cell == nil {
var query = PFUser.query()!
query.whereKey("username", equalTo: currentObject!)// currentObject from 1st VC
//query.whereKey("username", equalTo: PFUser.currentUser()!.objectId!)
//query.whereKey("objectId", containedIn: PFUser.currentUser()?["accepted"] as! [String])
query.findObjectsInBackgroundWithBlock { (results, error) -> Void in
if let results = results {
for result in results as! [PFUser] {
self.usernames.append(result.username!)
let imageFile = result["picture"] as! PFFile
imageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
if error != nil {
print(error)
} else {
if let data = imageData {
self.images.append(UIImage(data: data)!)
self.tableView.reloadData()
}
}
}
}
self.tableView.reloadData()
}
}
}
cell.textLabel?.text = usernames[indexPath.row]
if images.count > indexPath.row {
cell.imageView?.image = images[indexPath.row]
}
if let clubName = object?["ClubName"] as? String {
cell?.textLabel?.text = clubName
}
return cell
}
}