使用Parse PFQueryTableViewController通过prepareForSegue传递objectId

时间:2015-03-26 15:19:51

标签: uitableview swift parse-platform

这很可能是一个简单的答案。我正在使用PFQueryTableViewController来填充表视图。我想将当前行的Parse objectId传递给我的crDetailViewController,但无法弄清楚如何。我尝试传递的变量叫做critterId。

我已经更新了我的代码,以反映下面的种族B的@ race-b建议,它使构建成功,但是当我选择一个创建断点的实际单元格时,我得到一个断点错误。当我查看调试代码时,它显示对象的值为nil,因此它不会以某种方式通过,因为根据定义,选择了一个实体,否则如何在第一时间选择单元格?谢谢你的帮助!

导入UIKit

class crTableViewController:PFQueryTableViewController {

// 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 = "CritterType"
    self.textKey = "Name"
    self.imageKey = "mainPhoto"
    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: "CritterType")
     return query
}

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 65
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            self.performSegueWithIdentifier("crDetailSegue", sender: self)
}


override func prepareForSegue(segue: UIStoryboardSegue,
    sender: AnyObject?) {

        if segue.identifier == "crDetailSegue" {
            let detailViewController = segue.destinationViewController
                as! crDetailViewController

            let myIndexPath = self.tableView.indexPathForSelectedRow()
            let row = myIndexPath!.row
               println(row)
            println(myIndexPath)
            detailViewController.critterId = self.objectAtIndexPath(myIndexPath)
        }
}

}

2 个答案:

答案 0 :(得分:0)

你应该使用一个objectAtIndexPath,它将返回你想要的任何indexPath.row对象。

答案 1 :(得分:0)

Parse将数据放入一个名为objects的数组中,因此要传递对象而不是ID,请使用以下代码:

detailViewController.critter = self.objects[indexPath.row]