如何从Swift中的Parse类获取用户列表和他们的个人资料图片?

时间:2015-09-03 05:34:48

标签: ios swift parse-platform pfquery pfquerytableviewcontrolle

在我的应用程序中,我试图显示俱乐部员工的信息,其中Fist表列出了俱乐部(来自Parse Backend),一旦选择了俱乐部,它就会显示所有员工(和他们的个人资料图片)在一个桌子(clubdetailTableVC)中再次在该俱乐部工作,最后,如果选择了一名员工,那么他的完整细节将与他的个人资料图像一起显示在VC中。

如果能够将俱乐部对象从第一个clubTableVC传递到clubDetailVC,但无法继续进行。这是我的完整代码。所有员工(PFUser)都保存在班级"用户",俱乐部表中有员工阵列(用户名为字符串)。

  //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 个答案:

没有答案