Как получить список пользователей и их профильные изображения из класса 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
    }


}

0 ответов

Другие вопросы по тегам